From e8a8c49a97d5cc56e2e8fb4c5e9b6cb00fcc77c1 Mon Sep 17 00:00:00 2001 From: Martin Bonnin Date: Tue, 23 Dec 2014 13:47:50 +0100 Subject: [PATCH 01/69] better handling of input format change for non-adaptive codecs * this fixes a bug when switching from HE-AAC 22050Hz to AAC 44100Hz (the AudioTrack was not reset and we were trying to send a bad number of bytes, triggering a "AudioTrack.write() called with invalid size" error) * this also improves quality switches, making it almost seamless --- .../exoplayer/MediaCodecTrackRenderer.java | 57 ++++++++++++++++++- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index 271e8ff461..8c4ad83992 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -135,6 +135,25 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { */ private static final int RECONFIGURATION_STATE_QUEUE_PENDING = 2; + /** + * No reinit is needed + */ + private static final int REINIT_STATE_NONE = 0; + /** + * The input format has just changed. Signal an end of stream to the codec so that we can + * retrieve the very last decoded samples from the previous format. + */ + private static final int REINIT_STATE_SIGNAL_END_OF_STREAM = 1; + /** + * The end of stream has been sent, wait for the codec to acknowledge it. + */ + private static final int REINIT_STATE_WAIT_END_OF_STREAM = 2; + /** + * The last sample has been processed, we can safely reinit now. + */ + private static final int REINIT_STATE_DO_REINIT_NOW = 3; + + public final CodecCounters codecCounters; private final DrmSessionManager drmSessionManager; @@ -159,6 +178,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { private boolean openedDrmSession; private boolean codecReconfigured; private int codecReconfigurationState; + private int codecReinitState; private int trackIndex; private int sourceState; @@ -166,6 +186,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { private boolean outputStreamEnded; private boolean waitingForKeys; private boolean waitingForFirstSyncFrame; + private boolean hasQueuedOneInputBuffer; private long currentPositionUs; /** @@ -194,6 +215,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { formatHolder = new MediaFormatHolder(); decodeOnlyPresentationTimestamps = new ArrayList(); outputBufferInfo = new MediaCodec.BufferInfo(); + codecReinitState = REINIT_STATE_NONE; } @Override @@ -302,6 +324,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { inputIndex = -1; outputIndex = -1; waitingForFirstSyncFrame = true; + hasQueuedOneInputBuffer = false; codecCounters.codecInitCount++; } @@ -346,6 +369,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { codecReconfigured = false; codecIsAdaptive = false; codecReconfigurationState = RECONFIGURATION_STATE_NONE; + codecReinitState = REINIT_STATE_NONE; codecCounters.codecReleaseCount++; try { codec.stop(); @@ -493,6 +517,13 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { if (inputStreamEnded) { return false; } + + if (codecReinitState == REINIT_STATE_DO_REINIT_NOW) { + releaseCodec(); + maybeInitCodec(); + return false; + } + if (inputIndex < 0) { inputIndex = codec.dequeueInputBuffer(0); if (inputIndex < 0) { @@ -502,6 +533,16 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { sampleHolder.data.clear(); } + if (codecReinitState == REINIT_STATE_SIGNAL_END_OF_STREAM) { + codec.queueInputBuffer(inputIndex, 0, 0, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM); + inputIndex = -1; + codecReinitState = REINIT_STATE_WAIT_END_OF_STREAM; + return false; + } else if (codecReinitState != REINIT_STATE_NONE) { + // we are still waiting for the last samples to be output + return false; + } + int result; if (waitingForKeys) { // We've already read an encrypted sample into sampleHolder, and are waiting for keys. @@ -591,6 +632,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { codec.queueInputBuffer(inputIndex, 0 , bufferSize, presentationTimeUs, 0); } inputIndex = -1; + hasQueuedOneInputBuffer = true; codecReconfigurationState = RECONFIGURATION_STATE_NONE; } catch (CryptoException e) { notifyCryptoError(e); @@ -644,8 +686,12 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { codecReconfigured = true; codecReconfigurationState = RECONFIGURATION_STATE_WRITE_PENDING; } else { - releaseCodec(); - maybeInitCodec(); + if (!hasQueuedOneInputBuffer) { + // no need to signal end of stream if nothing has been queued, we can just reinit asap + codecReinitState = REINIT_STATE_DO_REINIT_NOW; + } else { + codecReinitState = REINIT_STATE_SIGNAL_END_OF_STREAM; + } } } @@ -733,7 +779,12 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { } if ((outputBufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) { - outputStreamEnded = true; + if (codecReinitState == REINIT_STATE_WAIT_END_OF_STREAM) { + codecReinitState = REINIT_STATE_DO_REINIT_NOW; + } else { + outputStreamEnded = true; + } + return false; } From 79708f43f8d9665a3c984e618899e3b12eff8f9b Mon Sep 17 00:00:00 2001 From: Martin Bonnin Date: Thu, 22 Jan 2015 10:24:51 +0100 Subject: [PATCH 02/69] handle the case when flushCodec() is called while reiniting the decoders --- .../google/android/exoplayer/MediaCodecTrackRenderer.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index 8c4ad83992..5f28fab835 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -493,9 +493,10 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { decodeOnlyPresentationTimestamps.clear(); // Workaround for framework bugs. // See [Internal: b/8347958], [Internal: b/8578467], [Internal: b/8543366]. - if (Util.SDK_INT >= 18) { + if (Util.SDK_INT >= 18 && codecReinitState == REINIT_STATE_NONE) { codec.flush(); } else { + codecReinitState = REINIT_STATE_NONE; releaseCodec(); maybeInitCodec(); } @@ -504,6 +505,8 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { // avoid this issue by sending reconfiguration data following every flush. codecReconfigurationState = RECONFIGURATION_STATE_WRITE_PENDING; } + + hasQueuedOneInputBuffer = false; } /** From 424b29f996fd5211625ff407689ddb337b6e05a1 Mon Sep 17 00:00:00 2001 From: Martin Bonnin Date: Tue, 27 Jan 2015 10:44:02 +0100 Subject: [PATCH 03/69] remove REINIT_STATE_DO_REINIT_NOW state, reinit directly when needed. --- .../exoplayer/MediaCodecTrackRenderer.java | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index 5f28fab835..6b0d92f525 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -148,11 +148,6 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { * The end of stream has been sent, wait for the codec to acknowledge it. */ private static final int REINIT_STATE_WAIT_END_OF_STREAM = 2; - /** - * The last sample has been processed, we can safely reinit now. - */ - private static final int REINIT_STATE_DO_REINIT_NOW = 3; - public final CodecCounters codecCounters; @@ -521,12 +516,6 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { return false; } - if (codecReinitState == REINIT_STATE_DO_REINIT_NOW) { - releaseCodec(); - maybeInitCodec(); - return false; - } - if (inputIndex < 0) { inputIndex = codec.dequeueInputBuffer(0); if (inputIndex < 0) { @@ -691,7 +680,8 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { } else { if (!hasQueuedOneInputBuffer) { // no need to signal end of stream if nothing has been queued, we can just reinit asap - codecReinitState = REINIT_STATE_DO_REINIT_NOW; + releaseCodec(); + maybeInitCodec(); } else { codecReinitState = REINIT_STATE_SIGNAL_END_OF_STREAM; } @@ -783,7 +773,9 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { if ((outputBufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) { if (codecReinitState == REINIT_STATE_WAIT_END_OF_STREAM) { - codecReinitState = REINIT_STATE_DO_REINIT_NOW; + // The last sample has been processed, we can safely reinit now + releaseCodec(); + maybeInitCodec(); } else { outputStreamEnded = true; } From c228017fe4a4b2024c2a2515d785876e0fe43482 Mon Sep 17 00:00:00 2001 From: Martin Bonnin Date: Tue, 27 Jan 2015 18:35:40 +0100 Subject: [PATCH 04/69] rename hasQueuedOneInputBuffer to hasQueuedInputBuffer --- .../android/exoplayer/MediaCodecTrackRenderer.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index 6b0d92f525..ef5052c398 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -181,7 +181,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { private boolean outputStreamEnded; private boolean waitingForKeys; private boolean waitingForFirstSyncFrame; - private boolean hasQueuedOneInputBuffer; + private boolean hasQueuedInputBuffer; private long currentPositionUs; /** @@ -319,7 +319,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { inputIndex = -1; outputIndex = -1; waitingForFirstSyncFrame = true; - hasQueuedOneInputBuffer = false; + hasQueuedInputBuffer = false; codecCounters.codecInitCount++; } @@ -501,7 +501,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { codecReconfigurationState = RECONFIGURATION_STATE_WRITE_PENDING; } - hasQueuedOneInputBuffer = false; + hasQueuedInputBuffer = false; } /** @@ -624,7 +624,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { codec.queueInputBuffer(inputIndex, 0 , bufferSize, presentationTimeUs, 0); } inputIndex = -1; - hasQueuedOneInputBuffer = true; + hasQueuedInputBuffer = true; codecReconfigurationState = RECONFIGURATION_STATE_NONE; } catch (CryptoException e) { notifyCryptoError(e); @@ -678,7 +678,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { codecReconfigured = true; codecReconfigurationState = RECONFIGURATION_STATE_WRITE_PENDING; } else { - if (!hasQueuedOneInputBuffer) { + if (!hasQueuedInputBuffer) { // no need to signal end of stream if nothing has been queued, we can just reinit asap releaseCodec(); maybeInitCodec(); From e33e1d79227913b2b234364f53c946679af50722 Mon Sep 17 00:00:00 2001 From: Martin Bonnin Date: Tue, 27 Jan 2015 18:37:27 +0100 Subject: [PATCH 05/69] cleaner test --- .../com/google/android/exoplayer/MediaCodecTrackRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index ef5052c398..b8c33ea110 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -530,7 +530,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { inputIndex = -1; codecReinitState = REINIT_STATE_WAIT_END_OF_STREAM; return false; - } else if (codecReinitState != REINIT_STATE_NONE) { + } else if (codecReinitState == REINIT_STATE_WAIT_END_OF_STREAM) { // we are still waiting for the last samples to be output return false; } From ebbd022a524677d3623ab37281c3d7476f66f64d Mon Sep 17 00:00:00 2001 From: "J. Oliva" Date: Thu, 26 Feb 2015 16:49:05 +0100 Subject: [PATCH 06/69] Added new ID3 frames - Added support for ID3 frames of types GEOB and PRIV. - GEOB type is commonly used by dynamic ads provider to include in the stream information about the ads to be played. - PRIV type is commonly used for time synchronization (example: synchronizing playback of a live stream and its webvtt captions) and also by analytics companies to include tracking information in the stream. - Added a sample stream from Apple that contains ID3 metadata. --- .../android/exoplayer/demo/Samples.java | 3 ++ .../exoplayer/metadata/GeobMetadata.java | 38 +++++++++++++++++++ .../android/exoplayer/metadata/Id3Parser.java | 33 ++++++++++++++++ .../exoplayer/metadata/PrivMetadata.java | 34 +++++++++++++++++ 4 files changed, 108 insertions(+) create mode 100644 library/src/main/java/com/google/android/exoplayer/metadata/GeobMetadata.java create mode 100644 library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java index a22e825960..8b62775694 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java @@ -123,6 +123,9 @@ import java.util.Locale; new Sample("Apple AAC media playlist", "https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear0/" + "prog_index.m3u8", DemoUtil.TYPE_HLS), + new Sample("Apple ID3 metadata", + "http://devimages.apple.com/samplecode/adDemo/" + + "ad.m3u8", DemoUtil.TYPE_HLS), }; public static final Sample[] MISC = new Sample[] { diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/GeobMetadata.java b/library/src/main/java/com/google/android/exoplayer/metadata/GeobMetadata.java new file mode 100644 index 0000000000..1d4fcb4dee --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/metadata/GeobMetadata.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.metadata; + +/** + * A metadata that contains parsed ID3 GEOB (General Encapsulated Object) frame data associated + * with time indices. + */ +public class GeobMetadata { + + public static final String TYPE = "GEOB"; + + public final String mimeType; + public final String filename; + public final String description; + public final byte[] data; + + public GeobMetadata(String mimeType, String filename, String description, byte[] data) { + this.mimeType = mimeType; + this.filename = filename; + this.description = description; + this.data = data; + } + +} diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java index 1ec0e363dd..339390974d 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java @@ -67,6 +67,39 @@ public class Id3Parser implements MetadataParser> { String value = new String(frame, valueStartIndex, valueEndIndex - valueStartIndex, charset); metadata.put(TxxxMetadata.TYPE, new TxxxMetadata(description, value)); + } else if (frameId0 == 'P' && frameId1 == 'R' && frameId2 == 'I' && frameId3 == 'V') { + // Check frame ID == PRIV + byte[] frame = new byte[frameSize]; + id3Data.readBytes(frame, 0, frameSize); + + int firstZeroIndex = indexOf(frame, 0, (byte) 0); + String owner = new String(frame, 0, firstZeroIndex); + byte[] privateData = new byte[frameSize - firstZeroIndex - 1]; + System.arraycopy(frame, firstZeroIndex + 1, privateData, 0, frameSize - firstZeroIndex - 1); + metadata.put(PrivMetadata.TYPE, new PrivMetadata(owner, privateData)); + } else if (frameId0 == 'G' && frameId1 == 'E' && frameId2 == 'O' && frameId3 == 'B') { + // Check frame ID == GEOB + int encoding = id3Data.readUnsignedByte(); + String charset = getCharsetName(encoding); + byte[] frame = new byte[frameSize - 1]; + id3Data.readBytes(frame, 0, frameSize - 1); + + int firstZeroIndex = indexOf(frame, 0, (byte) 0); + String mimeType = new String(frame, 0, firstZeroIndex); + int filenameStartIndex = firstZeroIndex + 1; + int filenameEndIndex = indexOf(frame, filenameStartIndex, (byte) 0); + String filename = new String(frame, filenameStartIndex, + filenameEndIndex - filenameStartIndex, charset); + int descriptionStartIndex = filenameEndIndex + 1; + int descriptionEndIndex = indexOf(frame, descriptionStartIndex, (byte) 0); + String description = new String(frame, descriptionStartIndex, + descriptionEndIndex - descriptionStartIndex, charset); + + byte[] objectData = new byte[frameSize - descriptionEndIndex - 2]; + System.arraycopy(frame, descriptionEndIndex + 1, objectData, 0, + frameSize - descriptionEndIndex - 2); + metadata.put(GeobMetadata.TYPE, new GeobMetadata(mimeType, filename, + description, objectData)); } else { String type = String.format("%c%c%c%c", frameId0, frameId1, frameId2, frameId3); byte[] frame = new byte[frameSize]; diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java b/library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java new file mode 100644 index 0000000000..ba3918a775 --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.metadata; + +/** + * A metadata that contains parsed ID3 PRIV (Private) frame data associated + * with time indices. + */ +public class PrivMetadata { + + public static final String TYPE = "PRIV"; + + public final String owner; + public final byte[] privateData; + + public PrivMetadata(String owner, byte [] privateData) { + this.owner = owner; + this.privateData = privateData; + } + +} From c135bb7a57414ef77e5effee98a400cbb7eba738 Mon Sep 17 00:00:00 2001 From: "J. Oliva" Date: Thu, 26 Feb 2015 21:54:29 +0100 Subject: [PATCH 07/69] Fixes for correctly supporting UTF-16 and UTF-16BE charsets For fields encoded using UTF-16 or UTF-16BE charsets when looking for termination character we have to look for two zero consecutive bytes. Otherwise, as many characters encoded with UTF-16 or UTF-16BE has one of their 2 bytes set with the value zero, we will be truncating text fields. --- .../android/exoplayer/metadata/Id3Parser.java | 46 ++++++++++++++----- .../exoplayer/metadata/PrivMetadata.java | 2 +- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java index 339390974d..111e735b7d 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java @@ -29,6 +29,11 @@ import java.util.Map; */ public class Id3Parser implements MetadataParser> { + private static final int ID3_TEXT_ENCODING_ISO_8859_1 = 0; + private static final int ID3_TEXT_ENCODING_UTF_16 = 1; + private static final int ID3_TEXT_ENCODING_UTF_16BE = 2; + private static final int ID3_TEXT_ENCODING_UTF_8 = 3; + @Override public boolean canParse(String mimeType) { return mimeType.equals(MimeTypes.APPLICATION_ID3); @@ -60,10 +65,10 @@ public class Id3Parser implements MetadataParser> { byte[] frame = new byte[frameSize - 1]; id3Data.readBytes(frame, 0, frameSize - 1); - int firstZeroIndex = indexOf(frame, 0, (byte) 0); + int firstZeroIndex = indexOfEOS(frame, 0, encoding); String description = new String(frame, 0, firstZeroIndex, charset); - int valueStartIndex = indexOfNot(frame, firstZeroIndex, (byte) 0); - int valueEndIndex = indexOf(frame, valueStartIndex, (byte) 0); + int valueStartIndex = firstZeroIndex + 1; + int valueEndIndex = indexOfEOS(frame, valueStartIndex, encoding); String value = new String(frame, valueStartIndex, valueEndIndex - valueStartIndex, charset); metadata.put(TxxxMetadata.TYPE, new TxxxMetadata(description, value)); @@ -73,7 +78,7 @@ public class Id3Parser implements MetadataParser> { id3Data.readBytes(frame, 0, frameSize); int firstZeroIndex = indexOf(frame, 0, (byte) 0); - String owner = new String(frame, 0, firstZeroIndex); + String owner = new String(frame, 0, firstZeroIndex, "ISO-8859-1"); byte[] privateData = new byte[frameSize - firstZeroIndex - 1]; System.arraycopy(frame, firstZeroIndex + 1, privateData, 0, frameSize - firstZeroIndex - 1); metadata.put(PrivMetadata.TYPE, new PrivMetadata(owner, privateData)); @@ -85,13 +90,13 @@ public class Id3Parser implements MetadataParser> { id3Data.readBytes(frame, 0, frameSize - 1); int firstZeroIndex = indexOf(frame, 0, (byte) 0); - String mimeType = new String(frame, 0, firstZeroIndex); + String mimeType = new String(frame, 0, firstZeroIndex, "ISO-8859-1"); int filenameStartIndex = firstZeroIndex + 1; - int filenameEndIndex = indexOf(frame, filenameStartIndex, (byte) 0); + int filenameEndIndex = indexOfEOS(frame, filenameStartIndex, encoding); String filename = new String(frame, filenameStartIndex, filenameEndIndex - filenameStartIndex, charset); int descriptionStartIndex = filenameEndIndex + 1; - int descriptionEndIndex = indexOf(frame, descriptionStartIndex, (byte) 0); + int descriptionEndIndex = indexOfEOS(frame, descriptionStartIndex, encoding); String description = new String(frame, descriptionStartIndex, descriptionEndIndex - descriptionStartIndex, charset); @@ -131,6 +136,25 @@ public class Id3Parser implements MetadataParser> { return data.length; } + private static int indexOfEOS(byte[] data, int fromIndex, int encodingByte) { + int terminationPos = indexOf(data, fromIndex, (byte) 0); + + // For single byte encoding charsets, we are done + if(encodingByte == ID3_TEXT_ENCODING_ISO_8859_1 || encodingByte == ID3_TEXT_ENCODING_UTF_8) { + return terminationPos; + } + + // Otherwise, look for a two zero bytes + while(terminationPos < data.length - 1) { + if(data[terminationPos + 1] == (byte) 0) { + return terminationPos + 1; + } + terminationPos = indexOf(data, terminationPos + 1, (byte) 0); + } + + return data.length; + } + /** * Parses an ID3 header. * @@ -175,13 +199,13 @@ public class Id3Parser implements MetadataParser> { */ private static String getCharsetName(int encodingByte) { switch (encodingByte) { - case 0: + case ID3_TEXT_ENCODING_ISO_8859_1: return "ISO-8859-1"; - case 1: + case ID3_TEXT_ENCODING_UTF_16: return "UTF-16"; - case 2: + case ID3_TEXT_ENCODING_UTF_16BE: return "UTF-16BE"; - case 3: + case ID3_TEXT_ENCODING_UTF_8: return "UTF-8"; default: return "ISO-8859-1"; diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java b/library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java index ba3918a775..8573b25906 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/PrivMetadata.java @@ -26,7 +26,7 @@ public class PrivMetadata { public final String owner; public final byte[] privateData; - public PrivMetadata(String owner, byte [] privateData) { + public PrivMetadata(String owner, byte[] privateData) { this.owner = owner; this.privateData = privateData; } From f33cdd97e6d9ce92073ca46ac77d1481bce89b47 Mon Sep 17 00:00:00 2001 From: "J. Oliva" Date: Fri, 27 Feb 2015 10:57:43 +0100 Subject: [PATCH 08/69] Fixed an issue when looking for termination string in UTF-16 and UTF-16BE Modified parse method to take into account different lengths for the termination character (1 for UTF-8 and ISO-8859-1; 2 for UTF-16 and UTF-16BE). --- .../android/exoplayer/metadata/Id3Parser.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java index 111e735b7d..0b05a59631 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java @@ -67,7 +67,7 @@ public class Id3Parser implements MetadataParser> { int firstZeroIndex = indexOfEOS(frame, 0, encoding); String description = new String(frame, 0, firstZeroIndex, charset); - int valueStartIndex = firstZeroIndex + 1; + int valueStartIndex = firstZeroIndex + delimiterLength(encoding); int valueEndIndex = indexOfEOS(frame, valueStartIndex, encoding); String value = new String(frame, valueStartIndex, valueEndIndex - valueStartIndex, charset); @@ -91,17 +91,17 @@ public class Id3Parser implements MetadataParser> { int firstZeroIndex = indexOf(frame, 0, (byte) 0); String mimeType = new String(frame, 0, firstZeroIndex, "ISO-8859-1"); - int filenameStartIndex = firstZeroIndex + 1; + int filenameStartIndex = firstZeroIndex + delimiterLength(encoding); int filenameEndIndex = indexOfEOS(frame, filenameStartIndex, encoding); String filename = new String(frame, filenameStartIndex, filenameEndIndex - filenameStartIndex, charset); - int descriptionStartIndex = filenameEndIndex + 1; + int descriptionStartIndex = filenameEndIndex + delimiterLength(encoding); int descriptionEndIndex = indexOfEOS(frame, descriptionStartIndex, encoding); String description = new String(frame, descriptionStartIndex, descriptionEndIndex - descriptionStartIndex, charset); byte[] objectData = new byte[frameSize - descriptionEndIndex - 2]; - System.arraycopy(frame, descriptionEndIndex + 1, objectData, 0, + System.arraycopy(frame, descriptionEndIndex + delimiterLength(encoding), objectData, 0, frameSize - descriptionEndIndex - 2); metadata.put(GeobMetadata.TYPE, new GeobMetadata(mimeType, filename, description, objectData)); @@ -147,7 +147,7 @@ public class Id3Parser implements MetadataParser> { // Otherwise, look for a two zero bytes while(terminationPos < data.length - 1) { if(data[terminationPos + 1] == (byte) 0) { - return terminationPos + 1; + return terminationPos; } terminationPos = indexOf(data, terminationPos + 1, (byte) 0); } @@ -155,6 +155,11 @@ public class Id3Parser implements MetadataParser> { return data.length; } + private static int delimiterLength(int encodingByte) { + return (encodingByte == ID3_TEXT_ENCODING_ISO_8859_1 || + encodingByte == ID3_TEXT_ENCODING_UTF_8) ? 1 : 2; + } + /** * Parses an ID3 header. * From 1739af685a2b2cca76c253dc9c4733db9b3a1e43 Mon Sep 17 00:00:00 2001 From: "J. Oliva" Date: Fri, 27 Feb 2015 11:02:37 +0100 Subject: [PATCH 09/69] Removed indexOfNot method Removed the unused method indexOfNot --- .../android/exoplayer/metadata/Id3Parser.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java index 0b05a59631..47fca79fe1 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java @@ -70,7 +70,7 @@ public class Id3Parser implements MetadataParser> { int valueStartIndex = firstZeroIndex + delimiterLength(encoding); int valueEndIndex = indexOfEOS(frame, valueStartIndex, encoding); String value = new String(frame, valueStartIndex, valueEndIndex - valueStartIndex, - charset); + charset); metadata.put(TxxxMetadata.TYPE, new TxxxMetadata(description, value)); } else if (frameId0 == 'P' && frameId1 == 'R' && frameId2 == 'I' && frameId3 == 'V') { // Check frame ID == PRIV @@ -98,7 +98,7 @@ public class Id3Parser implements MetadataParser> { int descriptionStartIndex = filenameEndIndex + delimiterLength(encoding); int descriptionEndIndex = indexOfEOS(frame, descriptionStartIndex, encoding); String description = new String(frame, descriptionStartIndex, - descriptionEndIndex - descriptionStartIndex, charset); + descriptionEndIndex - descriptionStartIndex, charset); byte[] objectData = new byte[frameSize - descriptionEndIndex - 2]; System.arraycopy(frame, descriptionEndIndex + delimiterLength(encoding), objectData, 0, @@ -127,15 +127,6 @@ public class Id3Parser implements MetadataParser> { return data.length; } - private static int indexOfNot(byte[] data, int fromIndex, byte key) { - for (int i = fromIndex; i < data.length; i++) { - if (data[i] != key) { - return i; - } - } - return data.length; - } - private static int indexOfEOS(byte[] data, int fromIndex, int encodingByte) { int terminationPos = indexOf(data, fromIndex, (byte) 0); From 88475e4feedc68107779e44f135746086044538e Mon Sep 17 00:00:00 2001 From: "J. Oliva" Date: Fri, 27 Feb 2015 22:09:05 +0100 Subject: [PATCH 10/69] Fixed issue in the calculation of size of objectData - Fixed issue in the calculation of size of objectData - Indentation fixes --- .../android/exoplayer/metadata/Id3Parser.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java index 47fca79fe1..6519c5a31b 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java @@ -70,7 +70,7 @@ public class Id3Parser implements MetadataParser> { int valueStartIndex = firstZeroIndex + delimiterLength(encoding); int valueEndIndex = indexOfEOS(frame, valueStartIndex, encoding); String value = new String(frame, valueStartIndex, valueEndIndex - valueStartIndex, - charset); + charset); metadata.put(TxxxMetadata.TYPE, new TxxxMetadata(description, value)); } else if (frameId0 == 'P' && frameId1 == 'R' && frameId2 == 'I' && frameId3 == 'V') { // Check frame ID == PRIV @@ -94,17 +94,19 @@ public class Id3Parser implements MetadataParser> { int filenameStartIndex = firstZeroIndex + delimiterLength(encoding); int filenameEndIndex = indexOfEOS(frame, filenameStartIndex, encoding); String filename = new String(frame, filenameStartIndex, - filenameEndIndex - filenameStartIndex, charset); + filenameEndIndex - filenameStartIndex, charset); int descriptionStartIndex = filenameEndIndex + delimiterLength(encoding); int descriptionEndIndex = indexOfEOS(frame, descriptionStartIndex, encoding); String description = new String(frame, descriptionStartIndex, - descriptionEndIndex - descriptionStartIndex, charset); + descriptionEndIndex - descriptionStartIndex, charset); - byte[] objectData = new byte[frameSize - descriptionEndIndex - 2]; + int objectDataSize = frameSize - 1 /* encoding byte */ - descriptionEndIndex - + delimiterLength(encoding); + byte[] objectData = new byte[objectDataSize]; System.arraycopy(frame, descriptionEndIndex + delimiterLength(encoding), objectData, 0, - frameSize - descriptionEndIndex - 2); + objectDataSize); metadata.put(GeobMetadata.TYPE, new GeobMetadata(mimeType, filename, - description, objectData)); + description, objectData)); } else { String type = String.format("%c%c%c%c", frameId0, frameId1, frameId2, frameId3); byte[] frame = new byte[frameSize]; From b03c8a713b4d94a135b2c487223e043afd40724d Mon Sep 17 00:00:00 2001 From: "J. Oliva" Date: Sat, 28 Feb 2015 00:47:42 +0100 Subject: [PATCH 11/69] Mime type string always finish with a single 0 byte Mime type string always finish with a single 0 byte --- .../java/com/google/android/exoplayer/metadata/Id3Parser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java index 6519c5a31b..9fe098ae10 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java @@ -91,7 +91,7 @@ public class Id3Parser implements MetadataParser> { int firstZeroIndex = indexOf(frame, 0, (byte) 0); String mimeType = new String(frame, 0, firstZeroIndex, "ISO-8859-1"); - int filenameStartIndex = firstZeroIndex + delimiterLength(encoding); + int filenameStartIndex = firstZeroIndex + 1; int filenameEndIndex = indexOfEOS(frame, filenameStartIndex, encoding); String filename = new String(frame, filenameStartIndex, filenameEndIndex - filenameStartIndex, charset); From 3868b1d4cbd67677924f5831b95669c0cd8929eb Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 3 Mar 2015 17:11:21 +0000 Subject: [PATCH 12/69] Clean up media playlist blacklisting / fix nits. It seems fairly safe to assume a playlist wont be blacklisted within 1ms of the device booting :). --- .../android/exoplayer/hls/HlsChunkSource.java | 37 ++++++++----------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index 87458ee370..5aa0efe5e2 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -107,10 +107,9 @@ public class HlsChunkSource { public static final long DEFAULT_MAX_BUFFER_TO_SWITCH_DOWN_MS = 20000; /** - * The default maximum time a media playlist is blacklisted without - * rechecking if it is alive again (because an encoder reset, for example) + * The default time for which a media playlist should be blacklisted. */ - public static final long DEFAULT_MAX_TIME_MEDIA_PLAYLIST_BLACKLISTED_MS = 60000; + public static final long DEFAULT_PLAYLIST_BLACKLIST_MS = 60000; private static final String TAG = "HlsChunkSource"; private static final String AAC_FILE_EXTENSION = ".aac"; @@ -132,8 +131,7 @@ public class HlsChunkSource { /* package */ byte[] scratchSpace; /* package */ final HlsMediaPlaylist[] mediaPlaylists; - /* package */ final boolean[] mediaPlaylistBlacklistFlags; - /* package */ final long[] mediaPlaylistBlacklistedTimeMs; + /* package */ final long[] mediaPlaylistBlacklistTimesMs; /* package */ final long[] lastMediaPlaylistLoadTimesMs; /* package */ boolean live; /* package */ long durationUs; @@ -188,16 +186,14 @@ public class HlsChunkSource { if (playlist.type == HlsPlaylist.TYPE_MEDIA) { enabledVariants = new Variant[] {new Variant(0, playlistUrl, 0, null, -1, -1)}; mediaPlaylists = new HlsMediaPlaylist[1]; - mediaPlaylistBlacklistFlags = new boolean[1]; - mediaPlaylistBlacklistedTimeMs = new long[1]; + mediaPlaylistBlacklistTimesMs = new long[1]; lastMediaPlaylistLoadTimesMs = new long[1]; setMediaPlaylist(0, (HlsMediaPlaylist) playlist); } else { Assertions.checkState(playlist.type == HlsPlaylist.TYPE_MASTER); enabledVariants = filterVariants((HlsMasterPlaylist) playlist, variantIndices); mediaPlaylists = new HlsMediaPlaylist[enabledVariants.length]; - mediaPlaylistBlacklistFlags = new boolean[enabledVariants.length]; - mediaPlaylistBlacklistedTimeMs = new long[enabledVariants.length]; + mediaPlaylistBlacklistTimesMs = new long[enabledVariants.length]; lastMediaPlaylistLoadTimesMs = new long[enabledVariants.length]; } @@ -370,8 +366,7 @@ public class HlsChunkSource { int responseCode = responseCodeException.responseCode; if (responseCode == 404 || responseCode == 410) { MediaPlaylistChunk playlistChunk = (MediaPlaylistChunk) chunk; - mediaPlaylistBlacklistFlags[playlistChunk.variantIndex] = true; - mediaPlaylistBlacklistedTimeMs[playlistChunk.variantIndex] = SystemClock.elapsedRealtime(); + mediaPlaylistBlacklistTimesMs[playlistChunk.variantIndex] = SystemClock.elapsedRealtime(); if (!allPlaylistsBlacklisted()) { // We've handled the 404/410 by blacklisting the playlist. Log.w(TAG, "Blacklisted playlist (" + responseCode + "): " @@ -381,8 +376,7 @@ public class HlsChunkSource { // This was the last non-blacklisted playlist. Don't blacklist it. Log.w(TAG, "Final playlist not blacklisted (" + responseCode + "): " + playlistChunk.dataSpec.uri); - mediaPlaylistBlacklistFlags[playlistChunk.variantIndex] = false; - mediaPlaylistBlacklistedTimeMs[playlistChunk.variantIndex] = 0; + mediaPlaylistBlacklistTimesMs[playlistChunk.variantIndex] = 0; return false; } } @@ -404,7 +398,7 @@ public class HlsChunkSource { : adaptiveMode == ADAPTIVE_MODE_SPLICE ? previousTsChunk.startTimeUs : previousTsChunk.endTimeUs; long bufferedUs = bufferedPositionUs - playbackPositionUs; - if (mediaPlaylistBlacklistFlags[variantIndex] + if (mediaPlaylistBlacklistTimesMs[variantIndex] != 0 || (idealVariantIndex > variantIndex && bufferedUs < maxBufferDurationToSwitchDownUs) || (idealVariantIndex < variantIndex && bufferedUs > minBufferDurationToSwitchUpUs)) { // Switch variant. @@ -417,7 +411,7 @@ public class HlsChunkSource { private int getVariantIndexForBandwdith(int bandwidth) { int lowestQualityEnabledVariant = 0; for (int i = 0; i < enabledVariants.length; i++) { - if (!mediaPlaylistBlacklistFlags[i]) { + if (mediaPlaylistBlacklistTimesMs[i] == 0) { if (enabledVariants[i].bandwidth <= bandwidth) { return i; } @@ -545,8 +539,8 @@ public class HlsChunkSource { } private boolean allPlaylistsBlacklisted() { - for (int i = 0; i < mediaPlaylistBlacklistFlags.length; i++) { - if (!mediaPlaylistBlacklistFlags[i]) { + for (int i = 0; i < mediaPlaylistBlacklistTimesMs.length; i++) { + if (mediaPlaylistBlacklistTimesMs[i] == 0) { return false; } } @@ -555,11 +549,10 @@ public class HlsChunkSource { private void clearStaleBlacklistedPlaylists() { long currentTime = SystemClock.elapsedRealtime(); - for (int i = 0; i < mediaPlaylistBlacklistFlags.length; i++) { - if (mediaPlaylistBlacklistFlags[i] && - currentTime - mediaPlaylistBlacklistedTimeMs[i] > DEFAULT_MAX_TIME_MEDIA_PLAYLIST_BLACKLISTED_MS) { - mediaPlaylistBlacklistFlags[i] = false; - mediaPlaylistBlacklistedTimeMs[i] = 0; + for (int i = 0; i < mediaPlaylistBlacklistTimesMs.length; i++) { + if (mediaPlaylistBlacklistTimesMs[i] != 0 + && currentTime - mediaPlaylistBlacklistTimesMs[i] > DEFAULT_PLAYLIST_BLACKLIST_MS) { + mediaPlaylistBlacklistTimesMs[i] = 0; } } } From 0c6566bce7caba5c6920517160a89d06def33b92 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 3 Mar 2015 17:14:48 +0000 Subject: [PATCH 13/69] Add flags to DataSpec. Support GZIP option. Also remove uriIsFullStream. It's not doing anything particularly useful, so I think it makes sense to remove it from the public API; it's unlikely anyone is using it. Issue: #329 --- .../android/exoplayer/hls/HlsChunkSource.java | 5 +- .../exoplayer/upstream/DataSourceStream.java | 2 +- .../android/exoplayer/upstream/DataSpec.java | 72 ++++++++++++------- .../upstream/DefaultHttpDataSource.java | 43 ++++++----- .../exoplayer/upstream/NetworkLoadable.java | 2 +- .../exoplayer/upstream/TeeDataSource.java | 4 +- .../upstream/cache/CacheDataSource.java | 10 +-- 7 files changed, 80 insertions(+), 58 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index 5aa0efe5e2..82a9f98c51 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -438,13 +438,14 @@ public class HlsChunkSource { private MediaPlaylistChunk newMediaPlaylistChunk(int variantIndex) { Uri mediaPlaylistUri = Util.getMergedUri(baseUri, enabledVariants[variantIndex].url); - DataSpec dataSpec = new DataSpec(mediaPlaylistUri, 0, C.LENGTH_UNBOUNDED, null); + DataSpec dataSpec = new DataSpec(mediaPlaylistUri, 0, C.LENGTH_UNBOUNDED, null, + DataSpec.FLAG_ALLOW_GZIP); return new MediaPlaylistChunk(variantIndex, upstreamDataSource, dataSpec, mediaPlaylistUri.toString()); } private EncryptionKeyChunk newEncryptionKeyChunk(Uri keyUri, String iv) { - DataSpec dataSpec = new DataSpec(keyUri, 0, C.LENGTH_UNBOUNDED, null); + DataSpec dataSpec = new DataSpec(keyUri, 0, C.LENGTH_UNBOUNDED, null, DataSpec.FLAG_ALLOW_GZIP); return new EncryptionKeyChunk(upstreamDataSource, dataSpec, iv); } diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceStream.java b/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceStream.java index 5c4dcd65b2..33519d4e6c 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceStream.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceStream.java @@ -230,7 +230,7 @@ public final class DataSourceStream implements Loadable, NonBlockingInputStream long remainingLength = resolvedLength != C.LENGTH_UNBOUNDED ? resolvedLength - loadPosition : C.LENGTH_UNBOUNDED; loadDataSpec = new DataSpec(dataSpec.uri, dataSpec.position + loadPosition, - remainingLength, dataSpec.key); + remainingLength, dataSpec.key, dataSpec.flags); dataSource.open(loadDataSpec); } diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DataSpec.java b/library/src/main/java/com/google/android/exoplayer/upstream/DataSpec.java index ff3b7dda0d..a153d955cb 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DataSpec.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DataSpec.java @@ -25,22 +25,32 @@ import android.net.Uri; */ public final class DataSpec { + /** + * Permits an underlying network stack to request that the server use gzip compression. + *

+ * Should not typically be set if the data being requested is already compressed (e.g. most audio + * and video requests). May be set when requesting other data. + *

+ * When a {@link DataSource} is used to request data with this flag set, and if the + * {@link DataSource} does make a network request, then the value returned from + * {@link DataSource#open(DataSpec)} will typically be {@link C#LENGTH_UNBOUNDED}. The data read + * from {@link DataSource#read(byte[], int, int)} will be the decompressed data. + */ + public static final int FLAG_ALLOW_GZIP = 1; + /** * Identifies the source from which data should be read. */ public final Uri uri; - /** - * True if the data at {@link #uri} is the full stream. False otherwise. An example where this - * may be false is if {@link #uri} defines the location of a cached part of the stream. - */ - public final boolean uriIsFullStream; /** * The absolute position of the data in the full stream. */ public final long absoluteStreamPosition; /** - * The position of the data when read from {@link #uri}. Always equal to - * {@link #absoluteStreamPosition} if {@link #uriIsFullStream}. + * The position of the data when read from {@link #uri}. + *

+ * Always equal to {@link #absoluteStreamPosition} unless the {@link #uri} defines the location + * of a subset of the underyling data. */ public final long position; /** @@ -52,6 +62,10 @@ public final class DataSpec { * {@link DataSpec} is not intended to be used in conjunction with a cache. */ public final String key; + /** + * Request flags. Currently {@link #FLAG_ALLOW_GZIP} is the only supported flag. + */ + public final int flags; /** * Construct a {@link DataSpec} for the given uri and with {@link #key} set to null. @@ -59,11 +73,21 @@ public final class DataSpec { * @param uri {@link #uri}. */ public DataSpec(Uri uri) { - this(uri, 0, C.LENGTH_UNBOUNDED, null); + this(uri, 0); } /** - * Construct a {@link DataSpec} for which {@link #uriIsFullStream} is true. + * Construct a {@link DataSpec} for the given uri and with {@link #key} set to null. + * + * @param uri {@link #uri}. + * @param flags {@link #flags}. + */ + public DataSpec(Uri uri, int flags) { + this(uri, 0, C.LENGTH_UNBOUNDED, null, flags); + } + + /** + * Construct a {@link DataSpec} where {@link #position} equals {@link #absoluteStreamPosition}. * * @param uri {@link #uri}. * @param absoluteStreamPosition {@link #absoluteStreamPosition}, equal to {@link #position}. @@ -71,50 +95,50 @@ public final class DataSpec { * @param key {@link #key}. */ public DataSpec(Uri uri, long absoluteStreamPosition, long length, String key) { - this(uri, absoluteStreamPosition, length, key, absoluteStreamPosition, true); + this(uri, absoluteStreamPosition, absoluteStreamPosition, length, key, 0); } /** - * Construct a {@link DataSpec} for which {@link #uriIsFullStream} is false. + * Construct a {@link DataSpec} where {@link #position} equals {@link #absoluteStreamPosition}. * * @param uri {@link #uri}. - * @param absoluteStreamPosition {@link #absoluteStreamPosition}. + * @param absoluteStreamPosition {@link #absoluteStreamPosition}, equal to {@link #position}. * @param length {@link #length}. * @param key {@link #key}. - * @param position {@link #position}. + * @param flags {@link #flags}. */ - public DataSpec(Uri uri, long absoluteStreamPosition, long length, String key, long position) { - this(uri, absoluteStreamPosition, length, key, position, false); + public DataSpec(Uri uri, long absoluteStreamPosition, long length, String key, int flags) { + this(uri, absoluteStreamPosition, absoluteStreamPosition, length, key, flags); } /** - * Construct a {@link DataSpec}. + * Construct a {@link DataSpec} where {@link #position} may differ from + * {@link #absoluteStreamPosition}. * * @param uri {@link #uri}. * @param absoluteStreamPosition {@link #absoluteStreamPosition}. + * @param position {@link #position}. * @param length {@link #length}. * @param key {@link #key}. - * @param position {@link #position}. - * @param uriIsFullStream {@link #uriIsFullStream}. + * @param flags {@link #flags}. */ - public DataSpec(Uri uri, long absoluteStreamPosition, long length, String key, long position, - boolean uriIsFullStream) { + public DataSpec(Uri uri, long absoluteStreamPosition, long position, long length, String key, + int flags) { Assertions.checkArgument(absoluteStreamPosition >= 0); Assertions.checkArgument(position >= 0); Assertions.checkArgument(length > 0 || length == C.LENGTH_UNBOUNDED); - Assertions.checkArgument(absoluteStreamPosition == position || !uriIsFullStream); this.uri = uri; - this.uriIsFullStream = uriIsFullStream; this.absoluteStreamPosition = absoluteStreamPosition; this.position = position; this.length = length; this.key = key; + this.flags = flags; } @Override public String toString() { - return "DataSpec[" + uri + ", " + uriIsFullStream + ", " + absoluteStreamPosition + ", " + - position + ", " + length + ", " + key + "]"; + return "DataSpec[" + uri + ", " + ", " + absoluteStreamPosition + ", " + + position + ", " + length + ", " + key + ", " + flags + "]"; } } diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java index 6fbab8982e..8e0a4b75ec 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java @@ -132,19 +132,6 @@ public class DefaultHttpDataSource implements HttpDataSource { } } - /* - * TODO: If the server uses gzip compression when serving the response, this may end up returning - * the size of the compressed response, where-as it should be returning the decompressed size or - * -1. See: developer.android.com/reference/java/net/HttpURLConnection.html - * - * To fix this we should: - * - * 1. Explicitly require no compression for media requests (since media should be compressed - * already) by setting the Accept-Encoding header to "identity" - * 2. In other cases, for example when requesting manifests, we don't want to disable compression. - * For these cases we should ensure that we return -1 here (and avoid performing any sanity - * checks on the content length). - */ @Override public long open(DataSpec dataSpec) throws HttpDataSourceException { this.dataSpec = dataSpec; @@ -177,16 +164,23 @@ public class DefaultHttpDataSource implements HttpDataSource { throw new InvalidContentTypeException(contentType, dataSpec); } - long contentLength = getContentLength(connection); - dataLength = dataSpec.length == C.LENGTH_UNBOUNDED ? contentLength : dataSpec.length; - - if (dataSpec.length != C.LENGTH_UNBOUNDED && contentLength != C.LENGTH_UNBOUNDED - && contentLength != dataSpec.length) { - // The DataSpec specified a length and we resolved a length from the response headers, but - // the two lengths do not match. - closeConnection(); - throw new HttpDataSourceException( - new UnexpectedLengthException(dataSpec.length, contentLength), dataSpec); + if ((dataSpec.flags & DataSpec.FLAG_ALLOW_GZIP) == 0) { + long contentLength = getContentLength(connection); + dataLength = dataSpec.length == C.LENGTH_UNBOUNDED ? contentLength : dataSpec.length; + if (dataSpec.length != C.LENGTH_UNBOUNDED && contentLength != C.LENGTH_UNBOUNDED + && contentLength != dataSpec.length) { + // The DataSpec specified a length and we resolved a length from the response headers, but + // the two lengths do not match. + closeConnection(); + throw new HttpDataSourceException( + new UnexpectedLengthException(dataSpec.length, contentLength), dataSpec); + } + } else { + // Gzip is enabled. If the server opts to use gzip then the content length in the response + // will be that of the compressed data, which isn't what we want. Furthermore, there isn't a + // reliable way to determine whether the gzip was used or not. Hence we always treat the + // length as unknown. + dataLength = C.LENGTH_UNBOUNDED; } try { @@ -301,6 +295,9 @@ public class DefaultHttpDataSource implements HttpDataSource { } setRangeHeader(connection, dataSpec); connection.setRequestProperty("User-Agent", userAgent); + if ((dataSpec.flags & DataSpec.FLAG_ALLOW_GZIP) == 0) { + connection.setRequestProperty("Accept-Encoding", "identity"); + } connection.connect(); return connection; } diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/NetworkLoadable.java b/library/src/main/java/com/google/android/exoplayer/upstream/NetworkLoadable.java index 5e8058f6dd..d4f4e6abf7 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/NetworkLoadable.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/NetworkLoadable.java @@ -63,7 +63,7 @@ public final class NetworkLoadable implements Loadable { public NetworkLoadable(String url, HttpDataSource httpDataSource, Parser parser) { this.httpDataSource = httpDataSource; this.parser = parser; - dataSpec = new DataSpec(Uri.parse(url)); + dataSpec = new DataSpec(Uri.parse(url), DataSpec.FLAG_ALLOW_GZIP); } /** diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/TeeDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/TeeDataSource.java index cbb571f308..2e140db6c8 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/TeeDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/TeeDataSource.java @@ -42,8 +42,8 @@ public final class TeeDataSource implements DataSource { long dataLength = upstream.open(dataSpec); if (dataSpec.length == C.LENGTH_UNBOUNDED && dataLength != C.LENGTH_UNBOUNDED) { // Reconstruct dataSpec in order to provide the resolved length to the sink. - dataSpec = new DataSpec(dataSpec.uri, dataSpec.absoluteStreamPosition, dataLength, - dataSpec.key, dataSpec.position, dataSpec.uriIsFullStream); + dataSpec = new DataSpec(dataSpec.uri, dataSpec.absoluteStreamPosition, dataSpec.position, + dataLength, dataSpec.key, dataSpec.flags); } dataSink.open(dataSpec); return dataLength; diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSource.java index 5842d742ab..63a3763133 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSource.java @@ -22,7 +22,6 @@ import com.google.android.exoplayer.upstream.DataSpec; import com.google.android.exoplayer.upstream.FileDataSource; import com.google.android.exoplayer.upstream.TeeDataSource; import com.google.android.exoplayer.upstream.cache.CacheDataSink.CacheDataSinkException; -import com.google.android.exoplayer.util.Assertions; import android.net.Uri; import android.util.Log; @@ -64,6 +63,7 @@ public final class CacheDataSource implements DataSource { private DataSource currentDataSource; private Uri uri; + private int flags; private String key; private long readPosition; private long bytesRemaining; @@ -125,9 +125,9 @@ public final class CacheDataSource implements DataSource { @Override public long open(DataSpec dataSpec) throws IOException { - Assertions.checkState(dataSpec.uriIsFullStream); try { uri = dataSpec.uri; + flags = dataSpec.flags; key = dataSpec.key; readPosition = dataSpec.position; bytesRemaining = dataSpec.length; @@ -201,19 +201,19 @@ public final class CacheDataSource implements DataSource { // The data is locked in the cache, or we're ignoring the cache. Bypass the cache and read // from upstream. currentDataSource = upstreamDataSource; - dataSpec = new DataSpec(uri, readPosition, bytesRemaining, key); + dataSpec = new DataSpec(uri, readPosition, bytesRemaining, key, flags); } else if (span.isCached) { // Data is cached, read from cache. Uri fileUri = Uri.fromFile(span.file); long filePosition = readPosition - span.position; long length = Math.min(span.length - filePosition, bytesRemaining); - dataSpec = new DataSpec(fileUri, readPosition, length, key, filePosition); + dataSpec = new DataSpec(fileUri, readPosition, filePosition, length, key, flags); currentDataSource = cacheReadDataSource; } else { // Data is not cached, and data is not locked, read from upstream with cache backing. lockedSpan = span; long length = span.isOpenEnded() ? bytesRemaining : Math.min(span.length, bytesRemaining); - dataSpec = new DataSpec(uri, readPosition, length, key); + dataSpec = new DataSpec(uri, readPosition, length, key, flags); currentDataSource = cacheWriteDataSource != null ? cacheWriteDataSource : upstreamDataSource; } From b9addf28b2d7950b810cdfe6a50776d3a110bf71 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 3 Mar 2015 17:15:43 +0000 Subject: [PATCH 14/69] Formatting tweaks for enhanced ID3 support + support in demo app. --- .../exoplayer/demo/PlayerActivity.java | 23 +++++++++++++++---- .../android/exoplayer/demo/Samples.java | 5 ++-- .../android/exoplayer/metadata/Id3Parser.java | 14 +++++------ 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java b/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java index e52bb377fd..80274ecc7b 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java @@ -26,6 +26,8 @@ import com.google.android.exoplayer.demo.player.DemoPlayer.RendererBuilder; import com.google.android.exoplayer.demo.player.HlsRendererBuilder; import com.google.android.exoplayer.demo.player.SmoothStreamingRendererBuilder; import com.google.android.exoplayer.demo.player.UnsupportedDrmException; +import com.google.android.exoplayer.metadata.GeobMetadata; +import com.google.android.exoplayer.metadata.PrivMetadata; import com.google.android.exoplayer.metadata.TxxxMetadata; import com.google.android.exoplayer.text.CaptionStyleCompat; import com.google.android.exoplayer.text.SubtitleView; @@ -446,11 +448,22 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback, @Override public void onId3Metadata(Map metadata) { - for (int i = 0; i < metadata.size(); i++) { - if (metadata.containsKey(TxxxMetadata.TYPE)) { - TxxxMetadata txxxMetadata = (TxxxMetadata) metadata.get(TxxxMetadata.TYPE); - Log.i(TAG, String.format("ID3 TimedMetadata: description=%s, value=%s", - txxxMetadata.description, txxxMetadata.value)); + for (Map.Entry entry : metadata.entrySet()) { + if (TxxxMetadata.TYPE.equals(entry.getKey())) { + TxxxMetadata txxxMetadata = (TxxxMetadata) entry.getValue(); + Log.i(TAG, String.format("ID3 TimedMetadata %s: description=%s, value=%s", + TxxxMetadata.TYPE, txxxMetadata.description, txxxMetadata.value)); + } else if (PrivMetadata.TYPE.equals(entry.getKey())) { + PrivMetadata privMetadata = (PrivMetadata) entry.getValue(); + Log.i(TAG, String.format("ID3 TimedMetadata %s: owner=%s", + PrivMetadata.TYPE, privMetadata.owner)); + } else if (GeobMetadata.TYPE.equals(entry.getKey())) { + GeobMetadata geobMetadata = (GeobMetadata) entry.getValue(); + Log.i(TAG, String.format("ID3 TimedMetadata %s: mimeType=%s, filename=%s, description=%s", + GeobMetadata.TYPE, geobMetadata.mimeType, geobMetadata.filename, + geobMetadata.description)); + } else { + Log.i(TAG, String.format("ID3 TimedMetadata %s", entry.getKey())); } } } diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java index 8b62775694..682d474972 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java @@ -123,9 +123,8 @@ import java.util.Locale; new Sample("Apple AAC media playlist", "https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear0/" + "prog_index.m3u8", DemoUtil.TYPE_HLS), - new Sample("Apple ID3 metadata", - "http://devimages.apple.com/samplecode/adDemo/" - + "ad.m3u8", DemoUtil.TYPE_HLS), + new Sample("Apple ID3 metadata", "http://devimages.apple.com/samplecode/adDemo/ad.m3u8", + DemoUtil.TYPE_HLS), }; public static final Sample[] MISC = new Sample[] { diff --git a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java index 9fe098ae10..0972a77c37 100644 --- a/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java +++ b/library/src/main/java/com/google/android/exoplayer/metadata/Id3Parser.java @@ -100,8 +100,8 @@ public class Id3Parser implements MetadataParser> { String description = new String(frame, descriptionStartIndex, descriptionEndIndex - descriptionStartIndex, charset); - int objectDataSize = frameSize - 1 /* encoding byte */ - descriptionEndIndex - - delimiterLength(encoding); + int objectDataSize = frameSize - 1 /* encoding byte */ - descriptionEndIndex + - delimiterLength(encoding); byte[] objectData = new byte[objectDataSize]; System.arraycopy(frame, descriptionEndIndex + delimiterLength(encoding), objectData, 0, objectDataSize); @@ -133,13 +133,13 @@ public class Id3Parser implements MetadataParser> { int terminationPos = indexOf(data, fromIndex, (byte) 0); // For single byte encoding charsets, we are done - if(encodingByte == ID3_TEXT_ENCODING_ISO_8859_1 || encodingByte == ID3_TEXT_ENCODING_UTF_8) { + if (encodingByte == ID3_TEXT_ENCODING_ISO_8859_1 || encodingByte == ID3_TEXT_ENCODING_UTF_8) { return terminationPos; } // Otherwise, look for a two zero bytes - while(terminationPos < data.length - 1) { - if(data[terminationPos + 1] == (byte) 0) { + while (terminationPos < data.length - 1) { + if (data[terminationPos + 1] == (byte) 0) { return terminationPos; } terminationPos = indexOf(data, terminationPos + 1, (byte) 0); @@ -149,8 +149,8 @@ public class Id3Parser implements MetadataParser> { } private static int delimiterLength(int encodingByte) { - return (encodingByte == ID3_TEXT_ENCODING_ISO_8859_1 || - encodingByte == ID3_TEXT_ENCODING_UTF_8) ? 1 : 2; + return (encodingByte == ID3_TEXT_ENCODING_ISO_8859_1 + || encodingByte == ID3_TEXT_ENCODING_UTF_8) ? 1 : 2; } /** From baea1cd12dc5f0b23e3c57b37811b8d72d76f1c5 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 3 Mar 2015 17:17:02 +0000 Subject: [PATCH 15/69] Add ftyp atom def --- library/src/main/java/com/google/android/exoplayer/mp4/Atom.java | 1 + 1 file changed, 1 insertion(+) diff --git a/library/src/main/java/com/google/android/exoplayer/mp4/Atom.java b/library/src/main/java/com/google/android/exoplayer/mp4/Atom.java index 292c231087..b3b96dce94 100644 --- a/library/src/main/java/com/google/android/exoplayer/mp4/Atom.java +++ b/library/src/main/java/com/google/android/exoplayer/mp4/Atom.java @@ -24,6 +24,7 @@ import java.util.List; public abstract class Atom { + public static final int TYPE_ftyp = getAtomTypeInteger("ftyp"); public static final int TYPE_avc1 = getAtomTypeInteger("avc1"); public static final int TYPE_avc3 = getAtomTypeInteger("avc3"); public static final int TYPE_esds = getAtomTypeInteger("esds"); From a1d4a5e154031796033f4774f03e4505cde3bcd1 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 3 Mar 2015 18:16:22 +0000 Subject: [PATCH 16/69] Continue waiting for keys until the codec is flushed. It was possible for a codec input buffer to be filled with two frames' worth of data, if seekTo was called after populating a buffer, if waitingForKeys was true and seeking did not trigger a flush. This caused the CryptoInfo to be configured as if the input buffer contained a large amount of reconfiguration data as cleartext. Move resetting waitingForKeys to flushCodec, so that we don't try to read the next sample from the source until the first one has been consumed or discarded. --- .../com/google/android/exoplayer/MediaCodecTrackRenderer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index 61b12e33b1..405855df19 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -370,6 +370,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { codecHotswapTimeMs = -1; inputIndex = -1; outputIndex = -1; + waitingForKeys = false; decodeOnlyPresentationTimestamps.clear(); inputBuffers = null; outputBuffers = null; @@ -418,7 +419,6 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { sourceState = SOURCE_STATE_NOT_READY; inputStreamEnded = false; outputStreamEnded = false; - waitingForKeys = false; } @Override @@ -478,6 +478,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { inputIndex = -1; outputIndex = -1; waitingForFirstSyncFrame = true; + waitingForKeys = false; decodeOnlyPresentationTimestamps.clear(); // Workaround for framework bugs. // See [Internal: b/8347958], [Internal: b/8578467], [Internal: b/8543366]. From 457557b56fe80d15a47ddde5bc78241075c2c262 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Wed, 4 Mar 2015 11:02:43 +0000 Subject: [PATCH 17/69] Parse ISO8601 timestamps using UTC timezone. --- .../android/exoplayer/dash/mpd/UtcTimingElementResolver.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElementResolver.java b/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElementResolver.java index bfb8d042b2..eb87b23cee 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElementResolver.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/mpd/UtcTimingElementResolver.java @@ -32,6 +32,7 @@ import java.io.InputStreamReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Locale; +import java.util.TimeZone; import java.util.concurrent.CancellationException; /** @@ -173,6 +174,7 @@ public class UtcTimingElementResolver implements Loader.Callback { try { // TODO: It may be necessary to handle timestamp offsets from UTC. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US); + format.setTimeZone(TimeZone.getTimeZone("UTC")); return format.parse(firstLine).getTime(); } catch (ParseException e) { throw new ParserException(e); From 462fea3eaf265557f818e31deef3429759f51cbd Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Thu, 5 Mar 2015 11:56:00 +0000 Subject: [PATCH 18/69] Correctly resolve Uris according to RFC3986. Issue: #327 --- .../exoplayer/dash/DashChunkSource.java | 2 +- .../dash/DashWrappingSegmentIndex.java | 8 +- .../MediaPresentationDescriptionParser.java | 43 ++- .../android/exoplayer/dash/mpd/RangedUri.java | 46 ++-- .../exoplayer/dash/mpd/Representation.java | 8 +- .../exoplayer/dash/mpd/SegmentBase.java | 12 +- .../android/exoplayer/hls/HlsChunkSource.java | 9 +- .../exoplayer/hls/HlsMasterPlaylist.java | 4 +- .../exoplayer/hls/HlsMediaPlaylist.java | 4 +- .../android/exoplayer/hls/HlsPlaylist.java | 5 +- .../exoplayer/hls/HlsPlaylistParser.java | 12 +- .../SmoothStreamingManifest.java | 7 +- .../SmoothStreamingManifestParser.java | 22 +- .../android/exoplayer/util/UriUtil.java | 258 ++++++++++++++++++ .../google/android/exoplayer/util/Util.java | 49 ---- 15 files changed, 343 insertions(+), 146 deletions(-) create mode 100644 library/src/main/java/com/google/android/exoplayer/util/UriUtil.java diff --git a/library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java b/library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java index 7186412722..412c645eb4 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java @@ -581,7 +581,7 @@ public class DashChunkSource implements ChunkSource { } if ((result & Extractor.RESULT_READ_INDEX) != 0) { representationHolders.get(format.id).segmentIndex = - new DashWrappingSegmentIndex(extractor.getIndex(), uri, indexAnchor); + new DashWrappingSegmentIndex(extractor.getIndex(), uri.toString(), indexAnchor); } } diff --git a/library/src/main/java/com/google/android/exoplayer/dash/DashWrappingSegmentIndex.java b/library/src/main/java/com/google/android/exoplayer/dash/DashWrappingSegmentIndex.java index 44648469af..d62d6ee5c2 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/DashWrappingSegmentIndex.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/DashWrappingSegmentIndex.java @@ -19,8 +19,6 @@ import com.google.android.exoplayer.chunk.parser.SegmentIndex; import com.google.android.exoplayer.dash.mpd.RangedUri; import com.google.android.exoplayer.util.Util; -import android.net.Uri; - /** * An implementation of {@link DashSegmentIndex} that wraps a {@link SegmentIndex} parsed from a * media stream. @@ -28,16 +26,16 @@ import android.net.Uri; public class DashWrappingSegmentIndex implements DashSegmentIndex { private final SegmentIndex segmentIndex; - private final Uri uri; + private final String uri; private final long indexAnchor; /** * @param segmentIndex The {@link SegmentIndex} to wrap. - * @param uri The {@link Uri} where the data is located. + * @param uri The URI where the data is located. * @param indexAnchor The index anchor point. This value is added to the byte offsets specified * in the wrapped {@link SegmentIndex}. */ - public DashWrappingSegmentIndex(SegmentIndex segmentIndex, Uri uri, long indexAnchor) { + public DashWrappingSegmentIndex(SegmentIndex segmentIndex, String uri, long indexAnchor) { this.segmentIndex = segmentIndex; this.uri = uri; this.indexAnchor = indexAnchor; diff --git a/library/src/main/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParser.java b/library/src/main/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParser.java index 813ce0c4e0..86722c0020 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParser.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParser.java @@ -24,9 +24,9 @@ import com.google.android.exoplayer.dash.mpd.SegmentBase.SingleSegmentBase; import com.google.android.exoplayer.upstream.NetworkLoadable; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.MimeTypes; +import com.google.android.exoplayer.util.UriUtil; import com.google.android.exoplayer.util.Util; -import android.net.Uri; import android.text.TextUtils; import org.xml.sax.helpers.DefaultHandler; @@ -83,7 +83,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler throw new ParserException( "inputStream does not contain a valid media presentation description"); } - return parseMediaPresentationDescription(xpp, Util.parseBaseUri(connectionUrl)); + return parseMediaPresentationDescription(xpp, connectionUrl); } catch (XmlPullParserException e) { throw new ParserException(e); } catch (ParseException e) { @@ -92,7 +92,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler } protected MediaPresentationDescription parseMediaPresentationDescription(XmlPullParser xpp, - Uri baseUrl) throws XmlPullParserException, IOException, ParseException { + String baseUrl) throws XmlPullParserException, IOException, ParseException { long availabilityStartTime = parseDateTime(xpp, "availabilityStartTime", -1); long durationMs = parseDuration(xpp, "mediaPresentationDuration", -1); long minBufferTimeMs = parseDuration(xpp, "minBufferTime", -1); @@ -137,7 +137,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler return new UtcTimingElement(schemeIdUri, value); } - protected Period parsePeriod(XmlPullParser xpp, Uri baseUrl, long mpdDurationMs) + protected Period parsePeriod(XmlPullParser xpp, String baseUrl, long mpdDurationMs) throws XmlPullParserException, IOException { String id = xpp.getAttributeValue(null, "id"); long startMs = parseDuration(xpp, "start", 0); @@ -170,7 +170,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler // AdaptationSet parsing. - protected AdaptationSet parseAdaptationSet(XmlPullParser xpp, Uri baseUrl, long periodStartMs, + protected AdaptationSet parseAdaptationSet(XmlPullParser xpp, String baseUrl, long periodStartMs, long periodDurationMs, SegmentBase segmentBase) throws XmlPullParserException, IOException { String mimeType = xpp.getAttributeValue(null, "mimeType"); @@ -287,9 +287,9 @@ public class MediaPresentationDescriptionParser extends DefaultHandler // Representation parsing. - protected Representation parseRepresentation(XmlPullParser xpp, Uri baseUrl, long periodStartMs, - long periodDurationMs, String mimeType, String language, SegmentBase segmentBase) - throws XmlPullParserException, IOException { + protected Representation parseRepresentation(XmlPullParser xpp, String baseUrl, + long periodStartMs, long periodDurationMs, String mimeType, String language, + SegmentBase segmentBase) throws XmlPullParserException, IOException { String id = xpp.getAttributeValue(null, "id"); int bandwidth = parseInt(xpp, "bandwidth"); int audioSamplingRate = parseInt(xpp, "audioSamplingRate"); @@ -335,7 +335,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler // SegmentBase, SegmentList and SegmentTemplate parsing. - protected SingleSegmentBase parseSegmentBase(XmlPullParser xpp, Uri baseUrl, + protected SingleSegmentBase parseSegmentBase(XmlPullParser xpp, String baseUrl, SingleSegmentBase parent) throws XmlPullParserException, IOException { long timescale = parseLong(xpp, "timescale", parent != null ? parent.timescale : 1); @@ -364,12 +364,12 @@ public class MediaPresentationDescriptionParser extends DefaultHandler } protected SingleSegmentBase buildSingleSegmentBase(RangedUri initialization, long timescale, - long presentationTimeOffset, Uri baseUrl, long indexStart, long indexLength) { + long presentationTimeOffset, String baseUrl, long indexStart, long indexLength) { return new SingleSegmentBase(initialization, timescale, presentationTimeOffset, baseUrl, indexStart, indexLength); } - protected SegmentList parseSegmentList(XmlPullParser xpp, Uri baseUrl, SegmentList parent, + protected SegmentList parseSegmentList(XmlPullParser xpp, String baseUrl, SegmentList parent, long periodDurationMs) throws XmlPullParserException, IOException { long timescale = parseLong(xpp, "timescale", parent != null ? parent.timescale : 1); @@ -413,7 +413,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler startNumber, duration, timeline, segments); } - protected SegmentTemplate parseSegmentTemplate(XmlPullParser xpp, Uri baseUrl, + protected SegmentTemplate parseSegmentTemplate(XmlPullParser xpp, String baseUrl, SegmentTemplate parent, long periodDurationMs) throws XmlPullParserException, IOException { long timescale = parseLong(xpp, "timescale", parent != null ? parent.timescale : 1); @@ -450,7 +450,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler protected SegmentTemplate buildSegmentTemplate(RangedUri initialization, long timescale, long presentationTimeOffset, long periodDurationMs, int startNumber, long duration, List timeline, UrlTemplate initializationTemplate, - UrlTemplate mediaTemplate, Uri baseUrl) { + UrlTemplate mediaTemplate, String baseUrl) { return new SegmentTemplate(initialization, timescale, presentationTimeOffset, periodDurationMs, startNumber, duration, timeline, initializationTemplate, mediaTemplate, baseUrl); } @@ -487,15 +487,15 @@ public class MediaPresentationDescriptionParser extends DefaultHandler return defaultValue; } - protected RangedUri parseInitialization(XmlPullParser xpp, Uri baseUrl) { + protected RangedUri parseInitialization(XmlPullParser xpp, String baseUrl) { return parseRangedUrl(xpp, baseUrl, "sourceURL", "range"); } - protected RangedUri parseSegmentUrl(XmlPullParser xpp, Uri baseUrl) { + protected RangedUri parseSegmentUrl(XmlPullParser xpp, String baseUrl) { return parseRangedUrl(xpp, baseUrl, "media", "mediaRange"); } - protected RangedUri parseRangedUrl(XmlPullParser xpp, Uri baseUrl, String urlAttribute, + protected RangedUri parseRangedUrl(XmlPullParser xpp, String baseUrl, String urlAttribute, String rangeAttribute) { String urlText = xpp.getAttributeValue(null, urlAttribute); long rangeStart = 0; @@ -509,7 +509,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler return buildRangedUri(baseUrl, urlText, rangeStart, rangeLength); } - protected RangedUri buildRangedUri(Uri baseUrl, String urlText, long rangeStart, + protected RangedUri buildRangedUri(String baseUrl, String urlText, long rangeStart, long rangeLength) { return new RangedUri(baseUrl, urlText, rangeStart, rangeLength); } @@ -548,15 +548,10 @@ public class MediaPresentationDescriptionParser extends DefaultHandler } } - protected static Uri parseBaseUrl(XmlPullParser xpp, Uri parentBaseUrl) + protected static String parseBaseUrl(XmlPullParser xpp, String parentBaseUrl) throws XmlPullParserException, IOException { xpp.next(); - String newBaseUrlText = xpp.getText(); - Uri newBaseUri = Uri.parse(newBaseUrlText); - if (!newBaseUri.isAbsolute()) { - newBaseUri = Uri.withAppendedPath(parentBaseUrl, newBaseUrlText); - } - return newBaseUri; + return UriUtil.resolve(parentBaseUrl, xpp.getText()); } protected static int parseInt(XmlPullParser xpp, String name) { diff --git a/library/src/main/java/com/google/android/exoplayer/dash/mpd/RangedUri.java b/library/src/main/java/com/google/android/exoplayer/dash/mpd/RangedUri.java index 2ce5ad3092..22a8bfdee5 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/mpd/RangedUri.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/mpd/RangedUri.java @@ -16,7 +16,7 @@ package com.google.android.exoplayer.dash.mpd; import com.google.android.exoplayer.util.Assertions; -import com.google.android.exoplayer.util.Util; +import com.google.android.exoplayer.util.UriUtil; import android.net.Uri; @@ -35,31 +35,28 @@ public final class RangedUri { */ public final long length; - // The {@link Uri} is stored internally in two parts, {@link #baseUri} and {@link uriString}. - // This helps optimize memory usage in the same way that DASH manifests allow many URLs to be - // expressed concisely in the form of a single BaseURL and many relative paths. Note that this - // optimization relies on the same {@code Uri} being passed as the {@link #baseUri} to many + // The URI is stored internally in two parts: reference URI and a base URI to use when + // resolving it. This helps optimize memory usage in the same way that DASH manifests allow many + // URLs to be expressed concisely in the form of a single BaseURL and many relative paths. Note + // that this optimization relies on the same object being passed as the base URI to many // instances of this class. - private final Uri baseUri; - private final String stringUri; + private final String baseUri; + private final String referenceUri; private int hashCode; /** * Constructs an ranged uri. - *

- * See {@link Util#getMergedUri(Uri, String)} for a description of how {@code baseUri} and - * {@code stringUri} are merged. * * @param baseUri A uri that can form the base of the uri defined by the instance. - * @param stringUri A relative or absolute uri in string form. + * @param referenceUri A reference uri that should be resolved with respect to {@code baseUri}. * @param start The (zero based) index of the first byte of the range. * @param length The length of the range, or -1 to indicate that the range is unbounded. */ - public RangedUri(Uri baseUri, String stringUri, long start, long length) { - Assertions.checkArgument(baseUri != null || stringUri != null); + public RangedUri(String baseUri, String referenceUri, long start, long length) { + Assertions.checkArgument(baseUri != null || referenceUri != null); this.baseUri = baseUri; - this.stringUri = stringUri; + this.referenceUri = referenceUri; this.start = start; this.length = length; } @@ -70,7 +67,16 @@ public final class RangedUri { * @return The {@link Uri} represented by the instance. */ public Uri getUri() { - return Util.getMergedUri(baseUri, stringUri); + return UriUtil.resolveToUri(baseUri, referenceUri); + } + + /** + * Returns the uri represented by the instance as a string. + * + * @return The uri represented by the instance. + */ + public String getUriString() { + return UriUtil.resolve(baseUri, referenceUri); } /** @@ -85,13 +91,13 @@ public final class RangedUri { * @return The merged {@link RangedUri} if the merge was successful. Null otherwise. */ public RangedUri attemptMerge(RangedUri other) { - if (other == null || !getUri().equals(other.getUri())) { + if (other == null || !getUriString().equals(other.getUriString())) { return null; } else if (length != -1 && start + length == other.start) { - return new RangedUri(baseUri, stringUri, start, + return new RangedUri(baseUri, referenceUri, start, other.length == -1 ? -1 : length + other.length); } else if (other.length != -1 && other.start + other.length == start) { - return new RangedUri(baseUri, stringUri, other.start, + return new RangedUri(baseUri, referenceUri, other.start, length == -1 ? -1 : other.length + length); } else { return null; @@ -104,7 +110,7 @@ public final class RangedUri { int result = 17; result = 31 * result + (int) start; result = 31 * result + (int) length; - result = 31 * result + getUri().hashCode(); + result = 31 * result + getUriString().hashCode(); hashCode = result; } return hashCode; @@ -121,7 +127,7 @@ public final class RangedUri { RangedUri other = (RangedUri) obj; return this.start == other.start && this.length == other.length - && getUri().equals(other.getUri()); + && getUriString().equals(other.getUriString()); } } diff --git a/library/src/main/java/com/google/android/exoplayer/dash/mpd/Representation.java b/library/src/main/java/com/google/android/exoplayer/dash/mpd/Representation.java index afae71de23..c5b0fcdad4 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/mpd/Representation.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/mpd/Representation.java @@ -147,7 +147,7 @@ public abstract class Representation { public static class SingleSegmentRepresentation extends Representation { /** - * The {@link Uri} of the single segment. + * The uri of the single segment. */ public final Uri uri; @@ -174,7 +174,7 @@ public abstract class Representation { * @param contentLength The content length, or -1 if unknown. */ public static SingleSegmentRepresentation newInstance(long periodStartMs, long periodDurationMs, - String contentId, long revisionId, Format format, Uri uri, long initializationStart, + String contentId, long revisionId, Format format, String uri, long initializationStart, long initializationEnd, long indexStart, long indexEnd, long contentLength) { RangedUri rangedUri = new RangedUri(uri, null, initializationStart, initializationEnd - initializationStart + 1); @@ -197,13 +197,13 @@ public abstract class Representation { public SingleSegmentRepresentation(long periodStartMs, long periodDurationMs, String contentId, long revisionId, Format format, SingleSegmentBase segmentBase, long contentLength) { super(periodStartMs, periodDurationMs, contentId, revisionId, format, segmentBase); - this.uri = segmentBase.uri; + this.uri = Uri.parse(segmentBase.uri); this.indexUri = segmentBase.getIndex(); this.contentLength = contentLength; // If we have an index uri then the index is defined externally, and we shouldn't return one // directly. If we don't, then we can't do better than an index defining a single segment. segmentIndex = indexUri != null ? null : new DashSingleSegmentIndex(periodStartMs * 1000, - periodDurationMs * 1000, new RangedUri(uri, null, 0, -1)); + periodDurationMs * 1000, new RangedUri(segmentBase.uri, null, 0, -1)); } @Override diff --git a/library/src/main/java/com/google/android/exoplayer/dash/mpd/SegmentBase.java b/library/src/main/java/com/google/android/exoplayer/dash/mpd/SegmentBase.java index c6eec00602..dffe7200fa 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/mpd/SegmentBase.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/mpd/SegmentBase.java @@ -19,8 +19,6 @@ import com.google.android.exoplayer.C; import com.google.android.exoplayer.dash.DashSegmentIndex; import com.google.android.exoplayer.util.Util; -import android.net.Uri; - import java.util.List; /** @@ -73,7 +71,7 @@ public abstract class SegmentBase { /** * The uri of the segment. */ - public final Uri uri; + public final String uri; /* package */ final long indexStart; /* package */ final long indexLength; @@ -89,7 +87,7 @@ public abstract class SegmentBase { * @param indexLength The length of the index data in bytes. */ public SingleSegmentBase(RangedUri initialization, long timescale, long presentationTimeOffset, - Uri uri, long indexStart, long indexLength) { + String uri, long indexStart, long indexLength) { super(initialization, timescale, presentationTimeOffset); this.uri = uri; this.indexStart = indexStart; @@ -99,7 +97,7 @@ public abstract class SegmentBase { /** * @param uri The uri of the segment. */ - public SingleSegmentBase(Uri uri) { + public SingleSegmentBase(String uri) { this(null, 1, 0, uri, 0, -1); } @@ -289,7 +287,7 @@ public abstract class SegmentBase { /* package */ final UrlTemplate initializationTemplate; /* package */ final UrlTemplate mediaTemplate; - private final Uri baseUrl; + private final String baseUrl; /** * @param initialization A {@link RangedUri} corresponding to initialization data, if such data @@ -315,7 +313,7 @@ public abstract class SegmentBase { public SegmentTemplate(RangedUri initialization, long timescale, long presentationTimeOffset, long periodDurationMs, int startNumber, long duration, List segmentTimeline, UrlTemplate initializationTemplate, - UrlTemplate mediaTemplate, Uri baseUrl) { + UrlTemplate mediaTemplate, String baseUrl) { super(initialization, timescale, presentationTimeOffset, periodDurationMs, startNumber, duration, segmentTimeline); this.initializationTemplate = initializationTemplate; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index 82a9f98c51..6995a4beb5 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -27,6 +27,7 @@ import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.upstream.DataSpec; import com.google.android.exoplayer.upstream.HttpDataSource.InvalidResponseCodeException; import com.google.android.exoplayer.util.Assertions; +import com.google.android.exoplayer.util.UriUtil; import com.google.android.exoplayer.util.Util; import android.net.Uri; @@ -121,7 +122,7 @@ public class HlsChunkSource { private final Variant[] enabledVariants; private final BandwidthMeter bandwidthMeter; private final int adaptiveMode; - private final Uri baseUri; + private final String baseUri; private final int maxWidth; private final int maxHeight; private final int targetBufferSize; @@ -301,11 +302,11 @@ public class HlsChunkSource { } HlsMediaPlaylist.Segment segment = mediaPlaylist.segments.get(chunkIndex); - Uri chunkUri = Util.getMergedUri(mediaPlaylist.baseUri, segment.url); + Uri chunkUri = UriUtil.resolveToUri(mediaPlaylist.baseUri, segment.url); // Check if encryption is specified. if (HlsMediaPlaylist.ENCRYPTION_METHOD_AES_128.equals(segment.encryptionMethod)) { - Uri keyUri = Util.getMergedUri(mediaPlaylist.baseUri, segment.encryptionKeyUri); + Uri keyUri = UriUtil.resolveToUri(mediaPlaylist.baseUri, segment.encryptionKeyUri); if (!keyUri.equals(encryptionKeyUri)) { // Encryption is specified and the key has changed. HlsChunk toReturn = newEncryptionKeyChunk(keyUri, segment.encryptionIV); @@ -437,7 +438,7 @@ public class HlsChunkSource { } private MediaPlaylistChunk newMediaPlaylistChunk(int variantIndex) { - Uri mediaPlaylistUri = Util.getMergedUri(baseUri, enabledVariants[variantIndex].url); + Uri mediaPlaylistUri = UriUtil.resolveToUri(baseUri, enabledVariants[variantIndex].url); DataSpec dataSpec = new DataSpec(mediaPlaylistUri, 0, C.LENGTH_UNBOUNDED, null, DataSpec.FLAG_ALLOW_GZIP); return new MediaPlaylistChunk(variantIndex, upstreamDataSource, dataSpec, diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsMasterPlaylist.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsMasterPlaylist.java index 7ce299df0d..0a2b008d2f 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsMasterPlaylist.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsMasterPlaylist.java @@ -15,8 +15,6 @@ */ package com.google.android.exoplayer.hls; -import android.net.Uri; - import java.util.List; /** @@ -26,7 +24,7 @@ public final class HlsMasterPlaylist extends HlsPlaylist { public final List variants; - public HlsMasterPlaylist(Uri baseUri, List variants) { + public HlsMasterPlaylist(String baseUri, List variants) { super(baseUri, HlsPlaylist.TYPE_MASTER); this.variants = variants; } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java index 3e9f151c08..16e90083d0 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java @@ -17,8 +17,6 @@ package com.google.android.exoplayer.hls; import com.google.android.exoplayer.C; -import android.net.Uri; - import java.util.List; /** @@ -70,7 +68,7 @@ public final class HlsMediaPlaylist extends HlsPlaylist { public final boolean live; public final long durationUs; - public HlsMediaPlaylist(Uri baseUri, int mediaSequence, int targetDurationSecs, int version, + public HlsMediaPlaylist(String baseUri, int mediaSequence, int targetDurationSecs, int version, boolean live, List segments) { super(baseUri, HlsPlaylist.TYPE_MEDIA); this.mediaSequence = mediaSequence; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylist.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylist.java index 3c86328ba6..b6cd9dac9a 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylist.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylist.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer.hls; -import android.net.Uri; /** * Represents an HLS playlist. @@ -25,10 +24,10 @@ public abstract class HlsPlaylist { public final static int TYPE_MASTER = 0; public final static int TYPE_MEDIA = 1; - public final Uri baseUri; + public final String baseUri; public final int type; - protected HlsPlaylist(Uri baseUri, int type) { + protected HlsPlaylist(String baseUri, int type) { this.baseUri = baseUri; this.type = type; } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java index 8db2094c9f..3fe3d15fd5 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java @@ -19,9 +19,6 @@ import com.google.android.exoplayer.C; import com.google.android.exoplayer.ParserException; import com.google.android.exoplayer.hls.HlsMediaPlaylist.Segment; import com.google.android.exoplayer.upstream.NetworkLoadable; -import com.google.android.exoplayer.util.Util; - -import android.net.Uri; import java.io.BufferedReader; import java.io.IOException; @@ -86,7 +83,6 @@ public final class HlsPlaylistParser implements NetworkLoadable.Parser extraLines = new LinkedList(); String line; @@ -97,7 +93,7 @@ public final class HlsPlaylistParser implements NetworkLoadable.Parser variants = new ArrayList(); int bandwidth = 0; @@ -160,7 +156,7 @@ public final class HlsPlaylistParser implements NetworkLoadable.Parser chunkStartTimes; private final long[] chunkStartTimesUs; private final long lastChunkDurationUs; - public StreamElement(Uri baseUri, String chunkTemplate, int type, String subType, + public StreamElement(String baseUri, String chunkTemplate, int type, String subType, long timescale, String name, int qualityLevels, int maxWidth, int maxHeight, int displayWidth, int displayHeight, String language, TrackElement[] tracks, List chunkStartTimes, long lastChunkDuration) { @@ -274,7 +275,7 @@ public class SmoothStreamingManifest { String chunkUrl = chunkTemplate .replace(URL_PLACEHOLDER_BITRATE, Integer.toString(tracks[track].bitrate)) .replace(URL_PLACEHOLDER_START_TIME, chunkStartTimes.get(chunkIndex).toString()); - return Util.getMergedUri(baseUri, chunkUrl); + return UriUtil.resolveToUri(baseUri, chunkUrl); } } diff --git a/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingManifestParser.java b/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingManifestParser.java index 5cfbc829e3..27dd7752da 100644 --- a/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingManifestParser.java +++ b/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingManifestParser.java @@ -23,9 +23,7 @@ import com.google.android.exoplayer.upstream.NetworkLoadable; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.CodecSpecificDataUtil; import com.google.android.exoplayer.util.MimeTypes; -import com.google.android.exoplayer.util.Util; -import android.net.Uri; import android.util.Base64; import android.util.Pair; @@ -65,8 +63,8 @@ public class SmoothStreamingManifestParser implements try { XmlPullParser xmlParser = xmlParserFactory.newPullParser(); xmlParser.setInput(inputStream, null); - SmoothStreamMediaParser smoothStreamMediaParser = new SmoothStreamMediaParser(null, - Util.parseBaseUri(connectionUrl)); + SmoothStreamMediaParser smoothStreamMediaParser = + new SmoothStreamMediaParser(null, connectionUrl); return (SmoothStreamingManifest) smoothStreamMediaParser.parse(xmlParser); } catch (XmlPullParserException e) { throw new ParserException(e); @@ -89,13 +87,13 @@ public class SmoothStreamingManifestParser implements */ private static abstract class ElementParser { - private final Uri baseUri; + private final String baseUri; private final String tag; private final ElementParser parent; private final List> normalizedAttributes; - public ElementParser(ElementParser parent, Uri baseUri, String tag) { + public ElementParser(ElementParser parent, String baseUri, String tag) { this.parent = parent; this.baseUri = baseUri; this.tag = tag; @@ -158,7 +156,7 @@ public class SmoothStreamingManifestParser implements } } - private ElementParser newChildParser(ElementParser parent, String name, Uri baseUri) { + private ElementParser newChildParser(ElementParser parent, String name, String baseUri) { if (TrackElementParser.TAG.equals(name)) { return new TrackElementParser(parent, baseUri); } else if (ProtectionElementParser.TAG.equals(name)) { @@ -342,7 +340,7 @@ public class SmoothStreamingManifestParser implements private ProtectionElement protectionElement; private List streamElements; - public SmoothStreamMediaParser(ElementParser parent, Uri baseUri) { + public SmoothStreamMediaParser(ElementParser parent, String baseUri) { super(parent, baseUri, TAG); lookAheadCount = -1; protectionElement = null; @@ -392,7 +390,7 @@ public class SmoothStreamingManifestParser implements private UUID uuid; private byte[] initData; - public ProtectionElementParser(ElementParser parent, Uri baseUri) { + public ProtectionElementParser(ElementParser parent, String baseUri) { super(parent, baseUri, TAG); } @@ -455,7 +453,7 @@ public class SmoothStreamingManifestParser implements private static final String KEY_FRAGMENT_START_TIME = "t"; private static final String KEY_FRAGMENT_REPEAT_COUNT = "r"; - private final Uri baseUri; + private final String baseUri; private final List tracks; private int type; @@ -473,7 +471,7 @@ public class SmoothStreamingManifestParser implements private long lastChunkDuration; - public StreamElementParser(ElementParser parent, Uri baseUri) { + public StreamElementParser(ElementParser parent, String baseUri) { super(parent, baseUri, TAG); this.baseUri = baseUri; tracks = new LinkedList(); @@ -615,7 +613,7 @@ public class SmoothStreamingManifestParser implements private int nalUnitLengthField; private String content; - public TrackElementParser(ElementParser parent, Uri baseUri) { + public TrackElementParser(ElementParser parent, String baseUri) { super(parent, baseUri, TAG); this.csd = new LinkedList(); } diff --git a/library/src/main/java/com/google/android/exoplayer/util/UriUtil.java b/library/src/main/java/com/google/android/exoplayer/util/UriUtil.java new file mode 100644 index 0000000000..61eb8fa0a4 --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/util/UriUtil.java @@ -0,0 +1,258 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.util; + +import android.net.Uri; +import android.text.TextUtils; + +/** + * Utility methods for manipulating URIs. + */ +public final class UriUtil { + + /** + * The length of arrays returned by {@link #getUriIndices(String)}. + */ + private static final int INDEX_COUNT = 4; + /** + * An index into an array returned by {@link #getUriIndices(String)}. + *

+ * The value at this position in the array is the index of the ':' after the scheme. Equals -1 if + * the URI is a relative reference (no scheme). The hier-part starts at (schemeColon + 1), + * including when the URI has no scheme. + */ + private static final int SCHEME_COLON = 0; + /** + * An index into an array returned by {@link #getUriIndices(String)}. + *

+ * The value at this position in the array is the index of the path part. Equals (schemeColon + 1) + * if no authority part, (schemeColon + 3) if the authority part consists of just "//", and + * (query) if no path part. The characters starting at this index can be "//" only if the + * authority part is non-empty (in this case the double-slash means the first segment is empty). + */ + private static final int PATH = 1; + /** + * An index into an array returned by {@link #getUriIndices(String)}. + *

+ * The value at this position in the array is the index of the query part, including the '?' + * before the query. Equals fragment if no query part, and (fragment - 1) if the query part is a + * single '?' with no data. + */ + private static final int QUERY = 2; + /** + * An index into an array returned by {@link #getUriIndices(String)}. + *

+ * The value at this position in the array is the index of the fragment part, including the '#' + * before the fragment. Equal to the length of the URI if no fragment part, and (length - 1) if + * the fragment part is a single '#' with no data. + */ + private static final int FRAGMENT = 3; + + private UriUtil() {} + + /** + * Like {@link #resolve(String, String)}, but returns a {@link Uri} instead of a {@link String}. + * + * @param baseUri The base URI. + * @param referenceUri The reference URI to resolve. + */ + public static Uri resolveToUri(String baseUri, String referenceUri) { + return Uri.parse(resolve(baseUri, referenceUri)); + } + + /** + * Performs relative resolution of a {@code referenceUri} with respect to a {@code baseUri}. + *

+ * The resolution is performed as specified by RFC-3986. + * + * @param baseUri The base URI. + * @param referenceUri The reference URI to resolve. + */ + public static String resolve(String baseUri, String referenceUri) { + StringBuilder uri = new StringBuilder(); + + // Map null onto empty string, to make the following logic simpler. + baseUri = baseUri == null ? "" : baseUri; + referenceUri = referenceUri == null ? "" : referenceUri; + + int[] refIndices = getUriIndices(referenceUri); + if (refIndices[SCHEME_COLON] != -1) { + // The reference is absolute. The target Uri is the reference. + uri.append(referenceUri); + removeDotSegments(uri, refIndices[PATH], refIndices[QUERY]); + return uri.toString(); + } + + int[] baseIndices = getUriIndices(baseUri); + if (refIndices[FRAGMENT] == 0) { + // The reference is empty or contains just the fragment part, then the target Uri is the + // concatenation of the base Uri without its fragment, and the reference. + return uri.append(baseUri, 0, baseIndices[FRAGMENT]).append(referenceUri).toString(); + } + + if (refIndices[QUERY] == 0) { + // The reference starts with the query part. The target is the base up to (but excluding) the + // query, plus the reference. + return uri.append(baseUri, 0, baseIndices[QUERY]).append(referenceUri).toString(); + } + + if (refIndices[PATH] != 0) { + // The reference has authority. The target is the base scheme plus the reference. + int baseLimit = baseIndices[SCHEME_COLON] + 1; + uri.append(baseUri, 0, baseLimit).append(referenceUri); + return removeDotSegments(uri, baseLimit + refIndices[PATH], baseLimit + refIndices[QUERY]); + } + + if (refIndices[PATH] != refIndices[QUERY] && referenceUri.charAt(refIndices[PATH]) == '/') { + // The reference path is rooted. The target is the base scheme and authority (if any), plus + // the reference. + uri.append(baseUri, 0, baseIndices[PATH]).append(referenceUri); + return removeDotSegments(uri, baseIndices[PATH], baseIndices[PATH] + refIndices[QUERY]); + } + + // The target Uri is the concatenation of the base Uri up to (but excluding) the last segment, + // and the reference. This can be split into 2 cases: + if (baseIndices[SCHEME_COLON] + 2 < baseIndices[PATH] + && baseIndices[PATH] == baseIndices[QUERY]) { + // Case 1: The base hier-part is just the authority, with an empty path. An additional '/' is + // needed after the authority, before appending the reference. + uri.append(baseUri, 0, baseIndices[PATH]).append('/').append(referenceUri); + return removeDotSegments(uri, baseIndices[PATH], baseIndices[PATH] + refIndices[QUERY] + 1); + } else { + // Case 2: Otherwise, find the last '/' in the base hier-part and append the reference after + // it. If base hier-part has no '/', it could only mean that it is completely empty or + // contains only one segment, in which case the whole hier-part is excluded and the reference + // is appended right after the base scheme colon without an added '/'. + int lastSlashIndex = baseUri.lastIndexOf('/', baseIndices[QUERY] - 1); + int baseLimit = lastSlashIndex == -1 ? baseIndices[PATH] : lastSlashIndex + 1; + uri.append(baseUri, 0, baseLimit).append(referenceUri); + return removeDotSegments(uri, baseIndices[PATH], baseLimit + refIndices[QUERY]); + } + } + + /** + * Removes dot segments from the path of a URI. + * + * @param uri A {@link StringBuilder} containing the URI. + * @param offset The index of the start of the path in {@code uri}. + * @param limit The limit (exclusive) of the path in {@code uri}. + */ + private static String removeDotSegments(StringBuilder uri, int offset, int limit) { + if (offset >= limit) { + // Nothing to do. + return uri.toString(); + } + if (uri.charAt(offset) == '/') { + // If the path starts with a /, always retain it. + offset++; + } + // The first character of the current path segment. + int segmentStart = offset; + int i = offset; + while (i <= limit) { + int nextSegmentStart = -1; + if (i == limit) { + nextSegmentStart = i; + } else if (uri.charAt(i) == '/') { + nextSegmentStart = i + 1; + } else { + i++; + continue; + } + // We've encountered the end of a segment or the end of the path. If the final segment was + // "." or "..", remove the appropriate segments of the path. + if (i == segmentStart + 1 && uri.charAt(segmentStart) == '.') { + // Given "abc/def/./ghi", remove "./" to get "abc/def/ghi". + uri.delete(segmentStart, nextSegmentStart); + limit -= nextSegmentStart - segmentStart; + i = segmentStart; + } else if (i == segmentStart + 2 && uri.charAt(segmentStart) == '.' + && uri.charAt(segmentStart + 1) == '.') { + // Given "abc/def/../ghi", remove "def/../" to get "abc/ghi". + int prevSegmentStart = uri.lastIndexOf("/", segmentStart - 2) + 1; + int removeFrom = prevSegmentStart > offset ? prevSegmentStart : offset; + uri.delete(removeFrom, nextSegmentStart); + limit -= nextSegmentStart - removeFrom; + segmentStart = prevSegmentStart; + i = prevSegmentStart; + } else { + i++; + segmentStart = i; + } + } + return uri.toString(); + } + + /** + * Calculates indices of the constituent components of a URI. + * + * @param uriString The URI as a string. + * @return The corresponding indices. + */ + private static int[] getUriIndices(String uriString) { + int[] indices = new int[INDEX_COUNT]; + if (TextUtils.isEmpty(uriString)) { + indices[SCHEME_COLON] = -1; + return indices; + } + + // Determine outer structure from right to left. + // Uri = scheme ":" hier-part [ "?" query ] [ "#" fragment ] + int length = uriString.length(); + int fragmentIndex = uriString.indexOf('#'); + if (fragmentIndex == -1) { + fragmentIndex = length; + } + int queryIndex = uriString.indexOf('?'); + if (queryIndex == -1 || queryIndex > fragmentIndex) { + // '#' before '?': '?' is within the fragment. + queryIndex = fragmentIndex; + } + // Slashes are allowed only in hier-part so any colon after the first slash is part of the + // hier-part, not the scheme colon separator. + int schemeIndexLimit = uriString.indexOf('/'); + if (schemeIndexLimit == -1 || schemeIndexLimit > queryIndex) { + schemeIndexLimit = queryIndex; + } + int schemeIndex = uriString.indexOf(':'); + if (schemeIndex > schemeIndexLimit) { + // '/' before ':' + schemeIndex = -1; + } + + // Determine hier-part structure: hier-part = "//" authority path / path + // This block can also cope with schemeIndex == -1. + boolean hasAuthority = schemeIndex + 2 < queryIndex + && uriString.charAt(schemeIndex + 1) == '/' + && uriString.charAt(schemeIndex + 2) == '/'; + int pathIndex; + if (hasAuthority) { + pathIndex = uriString.indexOf('/', schemeIndex + 3); // find first '/' after "://" + if (pathIndex == -1 || pathIndex > queryIndex) { + pathIndex = queryIndex; + } + } else { + pathIndex = schemeIndex + 1; + } + + indices[SCHEME_COLON] = schemeIndex; + indices[PATH] = pathIndex; + indices[QUERY] = queryIndex; + indices[FRAGMENT] = fragmentIndex; + return indices; + } + +} diff --git a/library/src/main/java/com/google/android/exoplayer/util/Util.java b/library/src/main/java/com/google/android/exoplayer/util/Util.java index 7e096cfa1b..5081532f7a 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/Util.java +++ b/library/src/main/java/com/google/android/exoplayer/util/Util.java @@ -17,7 +17,6 @@ package com.google.android.exoplayer.util; import com.google.android.exoplayer.upstream.DataSource; -import android.net.Uri; import android.text.TextUtils; import java.io.IOException; @@ -134,54 +133,6 @@ public final class Util { return text == null ? null : text.toLowerCase(Locale.US); } - /** - * Like {@link Uri#parse(String)}, but discards the part of the uri that follows the final - * forward slash. - * - * @param uriString An RFC 2396-compliant, encoded uri. - * @return The parsed base uri. - */ - public static Uri parseBaseUri(String uriString) { - return Uri.parse(uriString.substring(0, uriString.lastIndexOf('/'))); - } - - /** - * Merges a uri and a string to produce a new uri. - *

- * The uri is built according to the following rules: - *

    - *
  • If {@code baseUri} is null or if {@code stringUri} is absolute, then {@code baseUri} is - * ignored and the uri consists solely of {@code stringUri}. - *
  • If {@code stringUri} is null, then the uri consists solely of {@code baseUrl}. - *
  • Otherwise, the uri consists of the concatenation of {@code baseUri} and {@code stringUri}. - *
- * - * @param baseUri A uri that can form the base of the merged uri. - * @param stringUri A relative or absolute uri in string form. - * @return The merged uri. - */ - public static Uri getMergedUri(Uri baseUri, String stringUri) { - if (stringUri == null) { - return baseUri; - } - if (baseUri == null) { - return Uri.parse(stringUri); - } - if (stringUri.startsWith("/")) { - stringUri = stringUri.substring(1); - return new Uri.Builder() - .scheme(baseUri.getScheme()) - .authority(baseUri.getAuthority()) - .appendEncodedPath(stringUri) - .build(); - } - Uri uri = Uri.parse(stringUri); - if (uri.isAbsolute()) { - return uri; - } - return Uri.withAppendedPath(baseUri, stringUri); - } - /** * Returns the index of the largest value in an array that is less than (or optionally equal to) * a specified key. From fbd0a57e5c0a24fa7d4ae6ae56f63d271b411837 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 6 Mar 2015 16:39:00 +0000 Subject: [PATCH 19/69] Push tests. --- library/src/test/.classpath | 10 + library/src/test/.project | 62 +++ library/src/test/AndroidManifest.xml | 30 + library/src/test/assets/dash/sample_mpd_1 | 99 ++++ .../src/test/assets/webm/vorbis_codec_private | Bin 0 -> 4207 bytes library/src/test/assets/webvtt/empty | 1 + library/src/test/assets/webvtt/typical | 8 + .../assets/webvtt/typical_with_identifiers | 10 + .../src/test/assets/webvtt/typical_with_tags | 14 + .../android/exoplayer/MediaFormatTest.java | 60 ++ .../parser/webm/DefaultEbmlReaderTest.java | 350 ++++++++++++ .../chunk/parser/webm/WebmExtractorTest.java | 523 ++++++++++++++++++ .../exoplayer/dash/DashChunkSourceTest.java | 49 ++ ...ediaPresentationDescriptionParserTest.java | 38 ++ .../exoplayer/dash/mpd/RangedUriTest.java | 78 +++ .../dash/mpd/RepresentationTest.java | 42 ++ .../exoplayer/dash/mpd/UrlTemplateTest.java | 66 +++ .../hls/HlsMasterPlaylistParserTest.java | 108 ++++ .../hls/HlsMediaPlaylistParserTest.java | 135 +++++ .../exoplayer/metadata/Id3ParserTest.java | 46 ++ .../android/exoplayer/mp4/Mp4UtilTest.java | 133 +++++ .../android/exoplayer/testutil/Util.java | 38 ++ .../text/webvtt/WebvttParserTest.java | 134 +++++ .../text/webvtt/WebvttSubtitleTest.java | 204 +++++++ .../upstream/ByteArrayDataSourceTest.java | 151 +++++ .../upstream/DataSourceStreamTest.java | 60 ++ .../exoplayer/util/ParsableByteArrayTest.java | 124 +++++ .../android/exoplayer/util/UriUtilTest.java | 98 ++++ .../android/exoplayer/util/UtilTest.java | 147 +++++ library/src/test/libs/.README.txt | 1 + library/src/test/project.properties | 14 + library/src/test/res/.README.txt | 2 + third_party/dexmaker/LICENSE | 201 +++++++ third_party/dexmaker/dexmaker-1.2.jar | Bin 0 -> 675239 bytes third_party/dexmaker/dexmaker-mockito-1.2.jar | Bin 0 -> 12412 bytes third_party/mockito/LICENSE | 21 + third_party/mockito/mockito-all-1.9.5.jar | Bin 0 -> 1581066 bytes 37 files changed, 3057 insertions(+) create mode 100644 library/src/test/.classpath create mode 100644 library/src/test/.project create mode 100644 library/src/test/AndroidManifest.xml create mode 100755 library/src/test/assets/dash/sample_mpd_1 create mode 100644 library/src/test/assets/webm/vorbis_codec_private create mode 100644 library/src/test/assets/webvtt/empty create mode 100644 library/src/test/assets/webvtt/typical create mode 100644 library/src/test/assets/webvtt/typical_with_identifiers create mode 100644 library/src/test/assets/webvtt/typical_with_tags create mode 100644 library/src/test/java/com/google/android/exoplayer/MediaFormatTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/DefaultEbmlReaderTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/dash/DashChunkSourceTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParserTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/dash/mpd/RangedUriTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/dash/mpd/RepresentationTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/dash/mpd/UrlTemplateTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/hls/HlsMasterPlaylistParserTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/hls/HlsMediaPlaylistParserTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/metadata/Id3ParserTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/mp4/Mp4UtilTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/testutil/Util.java create mode 100644 library/src/test/java/com/google/android/exoplayer/text/webvtt/WebvttParserTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/text/webvtt/WebvttSubtitleTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/upstream/ByteArrayDataSourceTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/upstream/DataSourceStreamTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/util/ParsableByteArrayTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/util/UriUtilTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/util/UtilTest.java create mode 100644 library/src/test/libs/.README.txt create mode 100644 library/src/test/project.properties create mode 100644 library/src/test/res/.README.txt create mode 100644 third_party/dexmaker/LICENSE create mode 100644 third_party/dexmaker/dexmaker-1.2.jar create mode 100644 third_party/dexmaker/dexmaker-mockito-1.2.jar create mode 100644 third_party/mockito/LICENSE create mode 100644 third_party/mockito/mockito-all-1.9.5.jar diff --git a/library/src/test/.classpath b/library/src/test/.classpath new file mode 100644 index 0000000000..171a8c3ec8 --- /dev/null +++ b/library/src/test/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/library/src/test/.project b/library/src/test/.project new file mode 100644 index 0000000000..d63886b065 --- /dev/null +++ b/library/src/test/.project @@ -0,0 +1,62 @@ + + + ExoPlayerTests + + + ExoPlayerLib + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + + + libs/dexmaker-1.2.jar + 1 + $%7BPARENT-3-PROJECT_LOC%7D/third_party/dexmaker/dexmaker-1.2.jar + + + libs/dexmaker-mockito-1.2.jar + 1 + $%7BPARENT-3-PROJECT_LOC%7D/third_party/dexmaker/dexmaker-mockito-1.2.jar + + + libs/mockito-all-1.9.5.jar + 1 + $%7BPARENT-3-PROJECT_LOC%7D/third_party/mockito/mockito-all-1.9.5.jar + + + + + 1425657306619 + + 14 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-true-false-BUILD + + + + diff --git a/library/src/test/AndroidManifest.xml b/library/src/test/AndroidManifest.xml new file mode 100644 index 0000000000..517161f3b9 --- /dev/null +++ b/library/src/test/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + diff --git a/library/src/test/assets/dash/sample_mpd_1 b/library/src/test/assets/dash/sample_mpd_1 new file mode 100755 index 0000000000..07bcdd4f50 --- /dev/null +++ b/library/src/test/assets/dash/sample_mpd_1 @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + +http://www.test.com/141 + + + + + + + + + + + + + +http://www.test.com/135 + + + + + + + + + + + + + +http://www.test.com/vtt + + + + + + + + + + + diff --git a/library/src/test/assets/webm/vorbis_codec_private b/library/src/test/assets/webm/vorbis_codec_private new file mode 100644 index 0000000000000000000000000000000000000000..6a613449a701d5c8636f0f377692522960eb1431 GIT binary patch literal 4207 zcmeGfZBSEJ_P!tx5GWrJ6O8l)0wfW38XLR7z)XlzNC1ULf`(mo7eZPhx+(#;tm90S zU?C!lA<1H-Oh^+jS#*?btT^LLx>i7t4?)C!?A8_~R%YE+cBZ?(cF%i>uJlhk+y2_w zJ2yA?o^$Rw_k7)Z9xX8mJA9y_Mx#a0Xgh`w`WH0xcZ~YKf(88tivdLx{M5fz9jH|| z7VM|sOSV^Fh>nmhshIhpZnjH-P&7iep`Tigj9>faFGr4@D_|UHBWFuP z1+%|x8-dxAYl8_#CIP0!MYS6cT8DIey0ziHlYyP-$ zh13114C#p09Z=_NzQ(LezkC<12Z7$X~yIw z_S9|m)Yt5pn3S^El-pY~=80|PujVS``3rKzZbenqZ}u-7-oIekzgR&{D)uWc@Bd_N zr&Px=WJ}I6Ci9I+eB)B4ah?9e5DnFmCb97hOPQSy3OiFY#y6TRZ?;>{ov}W0^@UR; z2m=zb-G9sAd#m%!W+OFP2Q}7#@7u+7;{qfGTaF!K`+GqHHG}EkXHEdOLleiP=a=V%8If+w7D2(=RatdpG_Na^_fO|zDIwbT5GGdFB!X06(3X@u43pEbvx4L$Fg0~pKK8#T(R20G20HPrRd9@wj# zwJx6kX2ak z^xUo7;)DR_JN+32PQ`1x@VD`r|70im= zhxaRg-}K4*tyTA$K3hEc+2W~RZakq@TGn*G>YxcC(}_w)Q%#3(thZ&SB+T#NK;{%2 zVvL<;-#pDN8s?VFrB6K-?OGMxj?0H|Dc?|adqdNFyt@3gs`+i|d4+o6u==CR>Yu%T zRC)R6XWzWg7n@$p97vm_tj?vvwVBiTMP_HR)W}sDQ>n~xo$341W&c*@*y;>}J%+(H zgRiZV*KX0YTiqk}eG?Z}u6}2Ko;i>((DMmy{+i733fbEsd4|(VR{c8W-iF(uF@NKW z4nWA;6;VW9CEPM1V}aPVKx8Q7xr*;<3uJ16Va*7!5W4=}gSm#8Q?^1uf#>>9C zJHcQ(UZIWLAZnAIfF+Qq=2``6y5Io`Nj zZ(RNl5)#u2wlKs!J%2!$ zLprt64zIn%*`Bm!_kXeYmOxC$L+EV~c#u6w>r^Sl#`N{SQlhD#x&$!;BZ+C`={AW{ z;zN0&+7uKWjP92*Cg((D4>B!IjeY!ddeQuj(`t>?cP3RdwOSlw_cafM&8&jn8iUAB=RHGvT*~-g;ta9eN7Yo{D_5eO!r5xZJCa!1^OaaRW$q2g zd!KYyUz%Y+BQ*{*_xaif+QBIkU?ne@3`{sqKHur<5!!VSA;HD!CVjX4k{2F28u?!8g>*jDT;sSS zT2jbw?OGfDm`)CW==$?eP}N7OV1QYyZ-`t{upf1(K=|R-An#6n4q@sdXyUZg zoV;`;ULxRo?$!+5WSWV+8JC&$f4yH zR}Fa(gCJ3nu>dZoyNHe~I2e35^_vKSiXNy2OC@}#qeHk%A;|hv!&l$RA`wujn&ya= zUM=jP3fC0p9ni;*AY`%(V8sJgBpr-_9k6scO@SS-4c4vEAcLZFn4Z4aEuu5JboV2trl_{74xTmKx=OCEt06+~&tt)`NiwfuHWZJC*go-cP4F4}xTT zv!6X&yT^i%SQlfCuNh?RPCS+z&PugWu~&;w#JeU!nvs7z$;otBBqe=rWX0uP&08WFPx(;=7*d&GqXo~-tE~d=vPI+Wt)f4v97Rn;Wn>01hH{$ zA%3MWX^vNI|j)kUu`qhV<`VO|lH5z1_sqZ;m5P~X?yGgubhe*rbocJ=%NlNCXq^9|w uo%*uMe6YzM>u literal 0 HcmV?d00001 diff --git a/library/src/test/assets/webvtt/empty b/library/src/test/assets/webvtt/empty new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/library/src/test/assets/webvtt/empty @@ -0,0 +1 @@ + diff --git a/library/src/test/assets/webvtt/typical b/library/src/test/assets/webvtt/typical new file mode 100644 index 0000000000..d1395efe1b --- /dev/null +++ b/library/src/test/assets/webvtt/typical @@ -0,0 +1,8 @@ +WEBVTT +X-TIMESTAMP-MAP=LOCAL:00:00.000,MPEGTS:450000 + +00:00.000 --> 00:01.234 +This is the first subtitle. + +00:02.345 --> 00:03.456 +This is the second subtitle. diff --git a/library/src/test/assets/webvtt/typical_with_identifiers b/library/src/test/assets/webvtt/typical_with_identifiers new file mode 100644 index 0000000000..e2c5df065b --- /dev/null +++ b/library/src/test/assets/webvtt/typical_with_identifiers @@ -0,0 +1,10 @@ +WEBVTT +X-TIMESTAMP-MAP=LOCAL:00:00.000,MPEGTS:450000 + +1 +00:00.000 --> 00:01.234 +This is the first subtitle. + +2 +00:02.345 --> 00:03.456 +This is the second subtitle. diff --git a/library/src/test/assets/webvtt/typical_with_tags b/library/src/test/assets/webvtt/typical_with_tags new file mode 100644 index 0000000000..36e630e240 --- /dev/null +++ b/library/src/test/assets/webvtt/typical_with_tags @@ -0,0 +1,14 @@ +WEBVTT +X-TIMESTAMP-MAP=LOCAL:00:00.000,MPEGTS:450000 + +00:00.000 --> 00:01.234 +This is the first subtitle. + +00:02.345 --> 00:03.456 +This is the second subtitle. + +00:04.000 --> 00:05.000 +This is the third subtitle. + +00:06.000 --> 00:07.000 +This is the <fourth> &subtitle. diff --git a/library/src/test/java/com/google/android/exoplayer/MediaFormatTest.java b/library/src/test/java/com/google/android/exoplayer/MediaFormatTest.java new file mode 100644 index 0000000000..c9d50c43b0 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/MediaFormatTest.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer; + +import com.google.android.exoplayer.util.Util; + +import android.annotation.TargetApi; + +import junit.framework.TestCase; + +import java.util.ArrayList; +import java.util.List; + +/** + * Unit test for {@link MediaFormat}. + */ +public class MediaFormatTest extends TestCase { + + public void testConversionToFrameworkFormat() { + if (Util.SDK_INT < 16) { + // Test doesn't apply. + return; + } + + byte[] initData1 = new byte[] {1, 2, 3}; + byte[] initData2 = new byte[] {4, 5, 6}; + List initData = new ArrayList(); + initData.add(initData1); + initData.add(initData2); + + testConversionToFrameworkFormatV16( + MediaFormat.createVideoFormat("video/xyz", 102400, 1280, 720, 1.5f, initData)); + testConversionToFrameworkFormatV16( + MediaFormat.createAudioFormat("audio/xyz", 102400, 5, 44100, initData)); + } + + @TargetApi(16) + private void testConversionToFrameworkFormatV16(MediaFormat format) { + // Convert to a framework MediaFormat and back again. + MediaFormat convertedFormat = MediaFormat.createFromFrameworkMediaFormatV16( + format.getFrameworkMediaFormatV16()); + // Assert that we end up with an equivalent object to the one we started with. + assertEquals(format.hashCode(), convertedFormat.hashCode()); + assertEquals(format, convertedFormat); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/DefaultEbmlReaderTest.java b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/DefaultEbmlReaderTest.java new file mode 100644 index 0000000000..5d4a30cab9 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/DefaultEbmlReaderTest.java @@ -0,0 +1,350 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.chunk.parser.webm; + +import com.google.android.exoplayer.ParserException; +import com.google.android.exoplayer.upstream.ByteArrayNonBlockingInputStream; +import com.google.android.exoplayer.upstream.NonBlockingInputStream; + +import junit.framework.TestCase; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * Tests {@link DefaultEbmlReader}. + */ +public class DefaultEbmlReaderTest extends TestCase { + + private final EventCapturingEbmlEventHandler eventHandler = + new EventCapturingEbmlEventHandler(); + + public void testNothing() { + NonBlockingInputStream input = createTestInputStream(); + assertNoEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM); + } + + public void testMasterElement() { + NonBlockingInputStream input = + createTestInputStream(0x1A, 0x45, 0xDF, 0xA3, 0x84, 0x42, 0x85, 0x81, 0x01); + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.onMasterElementStart(EventCapturingEbmlEventHandler.ID_EBML, 0, 5, 4); + expected.onIntegerElement(EventCapturingEbmlEventHandler.ID_DOC_TYPE_READ_VERSION, 1); + expected.onMasterElementEnd(EventCapturingEbmlEventHandler.ID_EBML); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testMasterElementEmpty() { + NonBlockingInputStream input = createTestInputStream(0x18, 0x53, 0x80, 0x67, 0x80); + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.onMasterElementStart(EventCapturingEbmlEventHandler.ID_SEGMENT, 0, 5, 0); + expected.onMasterElementEnd(EventCapturingEbmlEventHandler.ID_SEGMENT); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testUnsignedIntegerElement() { + // 0xFE is chosen because for signed integers it should be interpreted as -2 + NonBlockingInputStream input = createTestInputStream(0x42, 0xF7, 0x81, 0xFE); + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.onIntegerElement(EventCapturingEbmlEventHandler.ID_EBML_READ_VERSION, 254); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testUnsignedIntegerElementLarge() { + NonBlockingInputStream input = + createTestInputStream(0x42, 0xF7, 0x88, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF); + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.onIntegerElement(EventCapturingEbmlEventHandler.ID_EBML_READ_VERSION, Long.MAX_VALUE); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testUnsignedIntegerElementTooLargeBecomesNegative() { + NonBlockingInputStream input = + createTestInputStream(0x42, 0xF7, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF); + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.onIntegerElement(EventCapturingEbmlEventHandler.ID_EBML_READ_VERSION, -1); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testStringElement() { + NonBlockingInputStream input = + createTestInputStream(0x42, 0x82, 0x86, 0x41, 0x62, 0x63, 0x31, 0x32, 0x33); + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.onStringElement(EventCapturingEbmlEventHandler.ID_DOC_TYPE, "Abc123"); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testStringElementEmpty() { + NonBlockingInputStream input = createTestInputStream(0x42, 0x82, 0x80); + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.onStringElement(EventCapturingEbmlEventHandler.ID_DOC_TYPE, ""); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testFloatElementThreeBytes() { + try { + eventHandler.read(createTestInputStream(0x44, 0x89, 0x83, 0x3F, 0x80, 0x00)); + fail(); + } catch (IllegalStateException exception) { + // Expected + } + assertNoEvents(); + } + + public void testFloatElementFourBytes() { + NonBlockingInputStream input = + createTestInputStream(0x44, 0x89, 0x84, 0x3F, 0x80, 0x00, 0x00); + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.onFloatElement(EventCapturingEbmlEventHandler.ID_DURATION, 1.0); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testFloatElementEightBytes() { + NonBlockingInputStream input = + createTestInputStream(0x44, 0x89, 0x88, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); + + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.onFloatElement(EventCapturingEbmlEventHandler.ID_DURATION, -2.0); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testBinaryElementReadBytes() { + eventHandler.binaryElementHandler = EventCapturingEbmlEventHandler.HANDLER_READ_BYTES; + NonBlockingInputStream input = + createTestInputStream(0xA3, 0x88, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08); + + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.binaryElementHandler = EventCapturingEbmlEventHandler.HANDLER_READ_BYTES; + expected.onBinaryElement( + EventCapturingEbmlEventHandler.ID_SIMPLE_BLOCK, 0, 0, 8, + createTestInputStream(0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08)); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testBinaryElementReadVarint() { + eventHandler.binaryElementHandler = EventCapturingEbmlEventHandler.HANDLER_READ_VARINT; + NonBlockingInputStream input = createTestInputStream(0xA3, 0x82, 0x40, 0x2A); + + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.binaryElementHandler = EventCapturingEbmlEventHandler.HANDLER_READ_VARINT; + expected.onBinaryElement( + EventCapturingEbmlEventHandler.ID_SIMPLE_BLOCK, 0, 0, 0, + createTestInputStream(0x40, 0x2A)); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testBinaryElementSkipBytes() { + eventHandler.binaryElementHandler = EventCapturingEbmlEventHandler.HANDLER_SKIP_BYTES; + NonBlockingInputStream input = + createTestInputStream(0xA3, 0x88, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08); + + EventCapturingEbmlEventHandler expected = new EventCapturingEbmlEventHandler(); + expected.binaryElementHandler = EventCapturingEbmlEventHandler.HANDLER_SKIP_BYTES; + expected.onBinaryElement( + EventCapturingEbmlEventHandler.ID_SIMPLE_BLOCK, 0, 0, 8, + createTestInputStream(0, 0, 0, 0, 0, 0, 0, 0)); + assertEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM, expected.events); + } + + public void testBinaryElementDoNothing() { + eventHandler.binaryElementHandler = EventCapturingEbmlEventHandler.HANDLER_DO_NOTHING; + try { + eventHandler.read( + createTestInputStream(0xA3, 0x88, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08)); + fail(); + } catch (IllegalStateException exception) { + // Expected + } + assertNoEvents(); + } + + public void testBinaryElementNotEnoughBytes() { + NonBlockingInputStream input = createTestInputStream(0xA3, 0x88, 0x01, 0x02, 0x03); + assertNoEvents(input, EbmlReader.READ_RESULT_NEED_MORE_DATA); + } + + public void testUnknownElement() { + NonBlockingInputStream input = createTestInputStream(0xEC, 0x81, 0x00); + assertNoEvents(input, EbmlReader.READ_RESULT_END_OF_STREAM); + } + + /** + * Helper to build a {@link ByteArrayNonBlockingInputStream} quickly from zero or more + * integer arguments. + * + *

Each argument must be able to cast to a byte value. + * + * @param data Zero or more integers with values between {@code 0x00} and {@code 0xFF} + * @return A {@link ByteArrayNonBlockingInputStream} containing the given byte values + */ + private NonBlockingInputStream createTestInputStream(int... data) { + byte[] bytes = new byte[data.length]; + for (int i = 0; i < data.length; i++) { + bytes[i] = (byte) data[i]; + } + return new ByteArrayNonBlockingInputStream(bytes); + } + + private void assertReads(NonBlockingInputStream input, int continues, int finalResult) { + for (int i = 0; i < continues; i++) { + assertEquals(EbmlReader.READ_RESULT_CONTINUE, eventHandler.read(input)); + } + assertEquals(finalResult, eventHandler.read(input)); + } + + private void assertNoEvents() { + assertEvents(Collections.emptyList()); + } + + private void assertEvents(List events) { + assertEquals(events.size(), eventHandler.events.size()); + for (int i = 0; i < events.size(); i++) { + assertEquals(events.get(i), eventHandler.events.get(i)); + } + } + + private void assertNoEvents(NonBlockingInputStream input, int finalResult) { + assertReads(input, 0, finalResult); + assertNoEvents(); + } + + private void assertEvents(NonBlockingInputStream input, int finalResult, List events) { + assertReads(input, events.size(), finalResult); + assertEvents(events); + } + + /** + * An {@link EbmlEventHandler} which captures all event callbacks made by + * {@link DefaultEbmlReader} for testing purposes. + */ + private static final class EventCapturingEbmlEventHandler implements EbmlEventHandler { + + // Element IDs + private static final int ID_EBML = 0x1A45DFA3; + private static final int ID_EBML_READ_VERSION = 0x42F7; + private static final int ID_DOC_TYPE = 0x4282; + private static final int ID_DOC_TYPE_READ_VERSION = 0x4285; + + private static final int ID_SEGMENT = 0x18538067; + private static final int ID_DURATION = 0x4489; + private static final int ID_SIMPLE_BLOCK = 0xA3; + + // Various ways to handle things in onBinaryElement() + private static final int HANDLER_DO_NOTHING = 0; + private static final int HANDLER_READ_BYTES = 1; + private static final int HANDLER_READ_VARINT = 2; + private static final int HANDLER_SKIP_BYTES = 3; + + private final EbmlReader reader = new DefaultEbmlReader(); + private final List events = new ArrayList(); + + private int binaryElementHandler; + + private EventCapturingEbmlEventHandler() { + reader.setEventHandler(this); + } + + private int read(NonBlockingInputStream inputStream) { + try { + return reader.read(inputStream); + } catch (ParserException e) { + // should never happen. + fail(); + return -1; + } + } + + @Override + public int getElementType(int id) { + switch (id) { + case ID_EBML: + case ID_SEGMENT: + return EbmlReader.TYPE_MASTER; + case ID_EBML_READ_VERSION: + case ID_DOC_TYPE_READ_VERSION: + return EbmlReader.TYPE_UNSIGNED_INT; + case ID_DOC_TYPE: + return EbmlReader.TYPE_STRING; + case ID_SIMPLE_BLOCK: + return EbmlReader.TYPE_BINARY; + case ID_DURATION: + return EbmlReader.TYPE_FLOAT; + default: + return EbmlReader.TYPE_UNKNOWN; + } + } + + @Override + public void onMasterElementStart( + int id, long elementOffset, int headerSize, long contentsSize) { + events.add(formatEvent(id, "start elementOffset=" + elementOffset + + " headerSize=" + headerSize + " contentsSize=" + contentsSize)); + } + + @Override + public void onMasterElementEnd(int id) { + events.add(formatEvent(id, "end")); + } + + @Override + public void onIntegerElement(int id, long value) { + events.add(formatEvent(id, "integer=" + String.valueOf(value))); + } + + @Override + public void onFloatElement(int id, double value) { + events.add(formatEvent(id, "float=" + String.valueOf(value))); + } + + @Override + public void onStringElement(int id, String value) { + events.add(formatEvent(id, "string=" + value)); + } + + @Override + public boolean onBinaryElement( + int id, long elementOffset, int headerSize, int contentsSize, + NonBlockingInputStream inputStream) { + switch (binaryElementHandler) { + case HANDLER_READ_BYTES: + byte[] bytes = new byte[contentsSize]; + reader.readBytes(inputStream, bytes, contentsSize); + events.add(formatEvent(id, "bytes=" + Arrays.toString(bytes))); + break; + case HANDLER_READ_VARINT: + long value = reader.readVarint(inputStream); + events.add(formatEvent(id, "varint=" + String.valueOf(value))); + break; + case HANDLER_SKIP_BYTES: + reader.skipBytes(inputStream, contentsSize); + events.add(formatEvent(id, "skipped " + contentsSize + " byte(s)")); + break; + case HANDLER_DO_NOTHING: + default: + // pass + } + return true; + } + + private static String formatEvent(int id, String event) { + return "[" + Integer.toHexString(id) + "] " + event; + } + + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java new file mode 100644 index 0000000000..757db52ae2 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java @@ -0,0 +1,523 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.chunk.parser.webm; + +import com.google.android.exoplayer.C; +import com.google.android.exoplayer.MediaFormat; +import com.google.android.exoplayer.ParserException; +import com.google.android.exoplayer.SampleHolder; +import com.google.android.exoplayer.chunk.parser.SegmentIndex; +import com.google.android.exoplayer.upstream.ByteArrayNonBlockingInputStream; +import com.google.android.exoplayer.upstream.NonBlockingInputStream; +import com.google.android.exoplayer.util.MimeTypes; + +import android.test.InstrumentationTestCase; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Arrays; + +public class WebmExtractorTest extends InstrumentationTestCase { + + private static final int INFO_ELEMENT_BYTE_SIZE = 31; + private static final int TRACKS_ELEMENT_BYTE_SIZE = 48; + private static final int CUES_ELEMENT_BYTE_SIZE = 12; + private static final int CUE_POINT_ELEMENT_BYTE_SIZE = 31; + + private static final int DEFAULT_TIMECODE_SCALE = 1000000; + + private static final long TEST_DURATION_US = 9920000L; + private static final int TEST_WIDTH = 1280; + private static final int TEST_HEIGHT = 720; + private static final int TEST_CHANNEL_COUNT = 1; + private static final int TEST_SAMPLE_RATE = 48000; + private static final long TEST_CODEC_DELAY = 6500000; + private static final long TEST_SEEK_PRE_ROLL = 80000000; + private static final int TEST_OPUS_CODEC_PRIVATE_SIZE = 2; + private static final String TEST_VORBIS_CODEC_PRIVATE = "webm/vorbis_codec_private"; + private static final int TEST_VORBIS_INFO_SIZE = 30; + private static final int TEST_VORBIS_BOOKS_SIZE = 4140; + + private static final int ID_VP9 = 0; + private static final int ID_OPUS = 1; + private static final int ID_VORBIS = 2; + + private static final int EXPECTED_INIT_RESULT = WebmExtractor.RESULT_READ_INIT + | WebmExtractor.RESULT_READ_INDEX | WebmExtractor.RESULT_END_OF_STREAM; + private static final int EXPECTED_INIT_AND_SAMPLE_RESULT = WebmExtractor.RESULT_READ_INIT + | WebmExtractor.RESULT_READ_INDEX | WebmExtractor.RESULT_READ_SAMPLE; + + private final WebmExtractor extractor = new WebmExtractor(); + private final SampleHolder sampleHolder = + new SampleHolder(SampleHolder.BUFFER_REPLACEMENT_MODE_DISABLED); + + @Override + public void setUp() { + sampleHolder.data = ByteBuffer.allocate(1024); + } + + public void testPrepare() throws ParserException { + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9)); + assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); + assertFormat(); + assertIndex(new IndexPoint(0, 0, TEST_DURATION_US)); + } + + public void testPrepareOpus() throws ParserException { + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_OPUS)); + assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); + assertAudioFormat(ID_OPUS); + assertIndex(new IndexPoint(0, 0, TEST_DURATION_US)); + } + + public void testPrepareVorbis() throws ParserException { + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VORBIS)); + assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); + assertAudioFormat(ID_VORBIS); + assertIndex(new IndexPoint(0, 0, TEST_DURATION_US)); + } + + public void testPrepareThreeCuePoints() throws ParserException { + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(3, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9)); + assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); + assertFormat(); + assertIndex( + new IndexPoint(0, 0, 10000), + new IndexPoint(10000, 0, 10000), + new IndexPoint(20000, 0, TEST_DURATION_US - 20000)); + } + + public void testPrepareCustomTimecodeScale() throws ParserException { + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(3, 0, true, 1000, ID_VP9)); + assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); + assertFormat(); + assertIndex( + new IndexPoint(0, 0, 10), + new IndexPoint(10, 0, 10), + new IndexPoint(20, 0, (TEST_DURATION_US / 1000) - 20)); + } + + public void testPrepareNoCuePoints() { + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(0, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9)); + try { + extractor.read(testInputStream, sampleHolder); + fail(); + } catch (ParserException exception) { + assertEquals("Invalid/missing cue points", exception.getMessage()); + } + } + + public void testPrepareInvalidDocType() { + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(1, 0, false, DEFAULT_TIMECODE_SCALE, ID_VP9)); + try { + extractor.read(testInputStream, sampleHolder); + fail(); + } catch (ParserException exception) { + assertEquals("DocType webB not supported", exception.getMessage()); + } + } + + public void testReadSampleKeyframe() throws ParserException { + MediaSegment mediaSegment = createMediaSegment(100, 0, 0, true, false, true); + byte[] testInputData = joinByteArrays( + createInitializationSegment( + 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_VP9), + mediaSegment.clusterBytes); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); + assertEquals(EXPECTED_INIT_AND_SAMPLE_RESULT, extractor.read(testInputStream, sampleHolder)); + assertFormat(); + assertSample(mediaSegment, 0, true, false); + assertEquals(WebmExtractor.RESULT_END_OF_STREAM, extractor.read(testInputStream, sampleHolder)); + } + + public void testReadBlock() throws ParserException { + MediaSegment mediaSegment = createMediaSegment(100, 0, 0, true, false, false); + byte[] testInputData = joinByteArrays( + createInitializationSegment( + 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_OPUS), + mediaSegment.clusterBytes); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); + assertEquals(EXPECTED_INIT_AND_SAMPLE_RESULT, extractor.read(testInputStream, sampleHolder)); + assertAudioFormat(ID_OPUS); + assertSample(mediaSegment, 0, true, false); + assertEquals(WebmExtractor.RESULT_END_OF_STREAM, extractor.read(testInputStream, sampleHolder)); + } + + public void testReadSampleInvisible() throws ParserException { + MediaSegment mediaSegment = createMediaSegment(100, 12, 13, false, true, true); + byte[] testInputData = joinByteArrays( + createInitializationSegment( + 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_VP9), + mediaSegment.clusterBytes); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); + assertEquals(EXPECTED_INIT_AND_SAMPLE_RESULT, extractor.read(testInputStream, sampleHolder)); + assertFormat(); + assertSample(mediaSegment, 25000, false, true); + assertEquals(WebmExtractor.RESULT_END_OF_STREAM, extractor.read(testInputStream, sampleHolder)); + } + + public void testReadSampleCustomTimescale() throws ParserException { + MediaSegment mediaSegment = createMediaSegment(100, 12, 13, false, false, true); + byte[] testInputData = joinByteArrays( + createInitializationSegment( + 1, mediaSegment.clusterBytes.length, true, 1000, ID_VP9), + mediaSegment.clusterBytes); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); + assertEquals(EXPECTED_INIT_AND_SAMPLE_RESULT, extractor.read(testInputStream, sampleHolder)); + assertFormat(); + assertSample(mediaSegment, 25, false, false); + assertEquals(WebmExtractor.RESULT_END_OF_STREAM, extractor.read(testInputStream, sampleHolder)); + } + + public void testReadSampleNegativeSimpleBlockTimecode() throws ParserException { + MediaSegment mediaSegment = createMediaSegment(100, 13, -12, true, true, true); + byte[] testInputData = joinByteArrays( + createInitializationSegment( + 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_VP9), + mediaSegment.clusterBytes); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); + assertEquals(EXPECTED_INIT_AND_SAMPLE_RESULT, extractor.read(testInputStream, sampleHolder)); + assertFormat(); + assertSample(mediaSegment, 1000, true, true); + assertEquals(WebmExtractor.RESULT_END_OF_STREAM, extractor.read(testInputStream, sampleHolder)); + } + + private void assertFormat() { + MediaFormat format = extractor.getFormat(); + assertEquals(TEST_WIDTH, format.width); + assertEquals(TEST_HEIGHT, format.height); + assertEquals(MimeTypes.VIDEO_VP9, format.mimeType); + } + + private void assertAudioFormat(int codecId) { + MediaFormat format = extractor.getFormat(); + assertEquals(TEST_CHANNEL_COUNT, format.channelCount); + assertEquals(TEST_SAMPLE_RATE, format.sampleRate); + if (codecId == ID_OPUS) { + assertEquals(MimeTypes.AUDIO_OPUS, format.mimeType); + assertEquals(3, format.initializationData.size()); + assertEquals(TEST_OPUS_CODEC_PRIVATE_SIZE, format.initializationData.get(0).length); + assertEquals(TEST_CODEC_DELAY, ByteBuffer.wrap(format.initializationData.get(1)).getLong()); + assertEquals(TEST_SEEK_PRE_ROLL, ByteBuffer.wrap(format.initializationData.get(2)).getLong()); + } else if (codecId == ID_VORBIS) { + assertEquals(MimeTypes.AUDIO_VORBIS, format.mimeType); + assertEquals(2, format.initializationData.size()); + assertEquals(TEST_VORBIS_INFO_SIZE, format.initializationData.get(0).length); + assertEquals(TEST_VORBIS_BOOKS_SIZE, format.initializationData.get(1).length); + } + } + + private void assertIndex(IndexPoint... indexPoints) { + SegmentIndex index = extractor.getIndex(); + assertEquals(CUES_ELEMENT_BYTE_SIZE + CUE_POINT_ELEMENT_BYTE_SIZE * indexPoints.length, + index.sizeBytes); + assertEquals(indexPoints.length, index.length); + for (int i = 0; i < indexPoints.length; i++) { + IndexPoint indexPoint = indexPoints[i]; + assertEquals(indexPoint.timeUs, index.timesUs[i]); + assertEquals(indexPoint.size, index.sizes[i]); + assertEquals(indexPoint.durationUs, index.durationsUs[i]); + } + } + + private void assertSample( + MediaSegment mediaSegment, int timeUs, boolean keyframe, boolean invisible) { + assertTrue(Arrays.equals( + mediaSegment.videoBytes, Arrays.copyOf(sampleHolder.data.array(), sampleHolder.size))); + assertEquals(timeUs, sampleHolder.timeUs); + assertEquals(keyframe, (sampleHolder.flags & C.SAMPLE_FLAG_SYNC) != 0); + assertEquals(invisible, sampleHolder.decodeOnly); + } + + private byte[] createInitializationSegment( + int cuePoints, int mediaSegmentSize, boolean docTypeIsWebm, int timecodeScale, + int codecId) { + int initalizationSegmentSize = INFO_ELEMENT_BYTE_SIZE + TRACKS_ELEMENT_BYTE_SIZE + + CUES_ELEMENT_BYTE_SIZE + CUE_POINT_ELEMENT_BYTE_SIZE * cuePoints; + byte[] tracksElement = null; + switch (codecId) { + case ID_VP9: + tracksElement = createTracksElementWithVideo(true, TEST_WIDTH, TEST_HEIGHT); + break; + case ID_OPUS: + tracksElement = createTracksElementWithOpusAudio(TEST_CHANNEL_COUNT); + break; + case ID_VORBIS: + tracksElement = createTracksElementWithVorbisAudio(TEST_CHANNEL_COUNT); + break; + } + byte[] bytes = joinByteArrays(createEbmlElement(1, docTypeIsWebm, 2), + createSegmentElement(initalizationSegmentSize + mediaSegmentSize), + createInfoElement(timecodeScale), + tracksElement, + createCuesElement(CUE_POINT_ELEMENT_BYTE_SIZE * cuePoints)); + for (int i = 0; i < cuePoints; i++) { + bytes = joinByteArrays(bytes, createCuePointElement(10 * i, initalizationSegmentSize)); + } + return bytes; + } + + private static MediaSegment createMediaSegment(int videoBytesLength, int clusterTimecode, + int blockTimecode, boolean keyframe, boolean invisible, boolean isSimple) { + byte[] videoBytes = createVideoBytes(videoBytesLength); + byte[] blockBytes; + if (isSimple) { + blockBytes = createSimpleBlockElement(videoBytes.length, blockTimecode, + keyframe, invisible, true); + } else { + blockBytes = createBlockElement(videoBytes.length, blockTimecode, invisible, true); + } + byte[] clusterBytes = + createClusterElement(blockBytes.length + videoBytes.length, clusterTimecode); + return new MediaSegment(joinByteArrays(clusterBytes, blockBytes, videoBytes), videoBytes); + } + + private static byte[] joinByteArrays(byte[]... byteArrays) { + int length = 0; + for (byte[] byteArray : byteArrays) { + length += byteArray.length; + } + byte[] joined = new byte[length]; + length = 0; + for (byte[] byteArray : byteArrays) { + System.arraycopy(byteArray, 0, joined, length, byteArray.length); + length += byteArray.length; + } + return joined; + } + + private static byte[] createEbmlElement( + int ebmlReadVersion, boolean docTypeIsWebm, int docTypeReadVersion) { + return createByteArray( + 0x1A, 0x45, 0xDF, 0xA3, // EBML + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, // size=15 + 0x42, 0xF7, // EBMLReadVersion + 0x81, ebmlReadVersion, // size=1 + 0x42, 0x82, // DocType + 0x84, 0x77, 0x65, 0x62, docTypeIsWebm ? 0x6D : 0x42, // size=4 value=webm/B + 0x42, 0x85, // DocTypeReadVersion + 0x81, docTypeReadVersion); // size=1 + } + + private static byte[] createSegmentElement(int size) { + byte[] sizeBytes = getIntegerBytes(size); + return createByteArray( + 0x18, 0x53, 0x80, 0x67, // Segment + 0x01, 0x00, 0x00, 0x00, sizeBytes[0], sizeBytes[1], sizeBytes[2], sizeBytes[3]); + } + + private static byte[] createInfoElement(int timecodeScale) { + byte[] scaleBytes = getIntegerBytes(timecodeScale); + return createByteArray( + 0x15, 0x49, 0xA9, 0x66, // Info + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, // size=19 + 0x2A, 0xD7, 0xB1, // TimecodeScale + 0x84, scaleBytes[0], scaleBytes[1], scaleBytes[2], scaleBytes[3], // size=4 + 0x44, 0x89, // Duration + 0x88, 0x40, 0xC3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00); // size=8 value=9920.0 + } + + private static byte[] createTracksElementWithVideo( + boolean codecIsVp9, int pixelWidth, int pixelHeight) { + byte[] widthBytes = getIntegerBytes(pixelWidth); + byte[] heightBytes = getIntegerBytes(pixelHeight); + return createByteArray( + 0x16, 0x54, 0xAE, 0x6B, // Tracks + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, // size=36 + 0xAE, // TrackEntry + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, // size=27 + 0x86, // CodecID + 0x85, 0x56, 0x5F, 0x56, 0x50, codecIsVp9 ? 0x39 : 0x30, // size=5 value=V_VP9/0 + 0xE0, // Video + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // size=8 + 0xB0, // PixelWidth + 0x82, widthBytes[2], widthBytes[3], // size=2 + 0xBA, // PixelHeight + 0x82, heightBytes[2], heightBytes[3]); // size=2 + } + + private static byte[] createTracksElementWithOpusAudio(int channelCount) { + byte[] channelCountBytes = getIntegerBytes(channelCount); + return createByteArray( + 0x16, 0x54, 0xAE, 0x6B, // Tracks + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, // size=57 + 0xAE, // TrackEntry + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, // size=48 + 0x86, // CodecID + 0x86, 0x41, 0x5F, 0x4F, 0x50, 0x55, 0x53, // size=6 value=A_OPUS + 0x56, 0xAA, // CodecDelay + 0x83, 0x63, 0x2E, 0xA0, // size=3 value=6500000 + 0x56, 0xBB, // SeekPreRoll + 0x84, 0x04, 0xC4, 0xB4, 0x00, // size=4 value=80000000 + 0xE1, // Audio + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, // size=13 + 0x9F, // Channels + 0x81, channelCountBytes[3], // size=1 + 0xB5, // SamplingFrequency + 0x88, 0x40, 0xE7, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, // size=8 value=48000 + 0x63, 0xA2, // CodecPrivate + 0x82, 0x00, 0x00); // size=2 + } + + private byte[] createTracksElementWithVorbisAudio(int channelCount) { + byte[] channelCountBytes = getIntegerBytes(channelCount); + byte[] tracksElement = createByteArray( + 0x16, 0x54, 0xAE, 0x6B, // Tracks + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x9C, // size=4252 + 0xAE, // TrackEntry + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x93, // size=4243 (36+4207) + 0x86, // CodecID + 0x88, 0x41, 0x5f, 0x56, 0x4f, 0x52, 0x42, 0x49, 0x53, // size=8 value=A_VORBIS + 0xE1, // Audio + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, // size=13 + 0x9F, // Channels + 0x81, channelCountBytes[3], // size=1 + 0xB5, // SamplingFrequency + 0x88, 0x40, 0xE7, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, // size=8 value=48000 + 0x63, 0xA2, // CodecPrivate + 0x50, 0x6F); // size=4207 + byte[] codecPrivate = new byte[4207]; + try { + getInstrumentation().getContext().getResources().getAssets().open(TEST_VORBIS_CODEC_PRIVATE) + .read(codecPrivate); + } catch (IOException e) { + fail(); // should never happen + } + return joinByteArrays(tracksElement, codecPrivate); + } + + private static byte[] createCuesElement(int size) { + byte[] sizeBytes = getIntegerBytes(size); + return createByteArray( + 0x1C, 0x53, 0xBB, 0x6B, // Cues + 0x01, 0x00, 0x00, 0x00, sizeBytes[0], sizeBytes[1], sizeBytes[2], sizeBytes[3]); // size=31 + } + + private static byte[] createCuePointElement(int cueTime, int cueClusterPosition) { + byte[] positionBytes = getIntegerBytes(cueClusterPosition); + return createByteArray( + 0xBB, // CuePoint + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, // size=22 + 0xB3, // CueTime + 0x81, cueTime, // size=1 + 0xB7, // CueTrackPositions + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, // size=10 + 0xF1, // CueClusterPosition + 0x88, 0x00, 0x00, 0x00, 0x00, positionBytes[0], positionBytes[1], + positionBytes[2], positionBytes[3]); // size=8 + } + + private static byte[] createClusterElement(int size, int timecode) { + byte[] sizeBytes = getIntegerBytes(size); + byte[] timeBytes = getIntegerBytes(timecode); + return createByteArray( + 0x1F, 0x43, 0xB6, 0x75, // Cluster + 0x01, 0x00, 0x00, 0x00, sizeBytes[0], sizeBytes[1], sizeBytes[2], sizeBytes[3], + 0xE7, // Timecode + 0x84, timeBytes[0], timeBytes[1], timeBytes[2], timeBytes[3]); // size=4 + } + + private static byte[] createSimpleBlockElement( + int size, int timecode, boolean keyframe, boolean invisible, boolean noLacing) { + byte[] sizeBytes = getIntegerBytes(size + 4); + byte[] timeBytes = getIntegerBytes(timecode); + byte flags = (byte) + ((keyframe ? 0x80 : 0x00) | (invisible ? 0x08 : 0x00) | (noLacing ? 0x00 : 0x06)); + return createByteArray( + 0xA3, // SimpleBlock + 0x01, 0x00, 0x00, 0x00, sizeBytes[0], sizeBytes[1], sizeBytes[2], sizeBytes[3], + 0x81, // Track number value=1 + timeBytes[2], timeBytes[3], flags); // Timecode and flags + } + + private static byte[] createBlockElement( + int size, int timecode, boolean invisible, boolean noLacing) { + int blockSize = size + 4; + byte[] blockSizeBytes = getIntegerBytes(blockSize); + byte[] timeBytes = getIntegerBytes(timecode); + int blockElementSize = 1 + 8 + blockSize; // id + size + length of data + byte[] sizeBytes = getIntegerBytes(blockElementSize); + byte flags = (byte) ((invisible ? 0x08 : 0x00) | (noLacing ? 0x00 : 0x06)); + return createByteArray( + 0xA0, // BlockGroup + 0x01, 0x00, 0x00, 0x00, sizeBytes[0], sizeBytes[1], sizeBytes[2], sizeBytes[3], + 0xA1, // Block + 0x01, 0x00, 0x00, 0x00, + blockSizeBytes[0], blockSizeBytes[1], blockSizeBytes[2], blockSizeBytes[3], + 0x81, // Track number value=1 + timeBytes[2], timeBytes[3], flags); // Timecode and flags + } + + private static byte[] createVideoBytes(int size) { + byte[] videoBytes = new byte[size]; + for (int i = 0; i < size; i++) { + videoBytes[i] = (byte) i; + } + return videoBytes; + } + + private static byte[] getIntegerBytes(int value) { + return createByteArray( + (value & 0xFF000000) >> 24, + (value & 0x00FF0000) >> 16, + (value & 0x0000FF00) >> 8, + (value & 0x000000FF)); + } + + private static byte[] createByteArray(int... intArray) { + byte[] byteArray = new byte[intArray.length]; + for (int i = 0; i < byteArray.length; i++) { + byteArray[i] = (byte) intArray[i]; + } + return byteArray; + } + + /** Used by {@link #createMediaSegment} to return both cluster and video bytes together. */ + private static final class MediaSegment { + + private final byte[] clusterBytes; + private final byte[] videoBytes; + + private MediaSegment(byte[] clusterBytes, byte[] videoBytes) { + this.clusterBytes = clusterBytes; + this.videoBytes = videoBytes; + } + + } + + /** Used by {@link #assertIndex(IndexPoint...)} to validate index elements. */ + private static final class IndexPoint { + + private final long timeUs; + private final int size; + private final long durationUs; + + private IndexPoint(long timeUs, int size, long durationUs) { + this.timeUs = timeUs; + this.size = size; + this.durationUs = durationUs; + } + + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/dash/DashChunkSourceTest.java b/library/src/test/java/com/google/android/exoplayer/dash/DashChunkSourceTest.java new file mode 100644 index 0000000000..d4e116e833 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/dash/DashChunkSourceTest.java @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.dash; + +import com.google.android.exoplayer.MediaFormat; +import com.google.android.exoplayer.chunk.Format; +import com.google.android.exoplayer.dash.mpd.Representation; +import com.google.android.exoplayer.dash.mpd.SegmentBase.SingleSegmentBase; + +import junit.framework.TestCase; + +/** + * Tests {@link DashChunkSource}. + */ +public class DashChunkSourceTest extends TestCase { + + public void testMaxVideoDimensions() { + SingleSegmentBase segmentBase1 = new SingleSegmentBase("https://example.com/1.mp4"); + Format format1 = new Format("1", "video/mp4", 100, 200, -1, -1, 1000); + Representation representation1 = + Representation.newInstance(0, 0, null, 0, format1, segmentBase1); + + SingleSegmentBase segmentBase2 = new SingleSegmentBase("https://example.com/2.mp4"); + Format format2 = new Format("2", "video/mp4", 400, 50, -1, -1, 1000); + Representation representation2 = + Representation.newInstance(0, 0, null, 0, format2, segmentBase2); + + DashChunkSource chunkSource = new DashChunkSource(null, null, representation1, representation2); + MediaFormat out = MediaFormat.createVideoFormat("video/h264", 1, 1, 1, 1, null); + chunkSource.getMaxVideoDimensions(out); + + assertEquals(400, out.getMaxVideoWidth()); + assertEquals(200, out.getMaxVideoHeight()); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParserTest.java b/library/src/test/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParserTest.java new file mode 100644 index 0000000000..7aa65564a0 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParserTest.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.dash.mpd; + +import android.test.InstrumentationTestCase; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Unit tests for {@link MediaPresentationDescriptionParser}. + */ +public class MediaPresentationDescriptionParserTest extends InstrumentationTestCase { + + private static final String SAMPLE_MPD_1 = "dash/sample_mpd_1"; + + public void testParseMediaPresentationDescription() throws IOException { + MediaPresentationDescriptionParser parser = new MediaPresentationDescriptionParser(); + InputStream inputStream = + getInstrumentation().getContext().getResources().getAssets().open(SAMPLE_MPD_1); + // Simple test to ensure that the sample manifest parses without throwing any exceptions. + parser.parse("https://example.com/test.mpd", inputStream); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/dash/mpd/RangedUriTest.java b/library/src/test/java/com/google/android/exoplayer/dash/mpd/RangedUriTest.java new file mode 100644 index 0000000000..52d5c1dd07 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/dash/mpd/RangedUriTest.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.dash.mpd; + +import junit.framework.TestCase; + +/** + * Unit test for {@link RangedUri}. + */ +public class RangedUriTest extends TestCase { + + private static final String FULL_URI = "http://www.test.com/path/file.ext"; + + public void testMerge() { + RangedUri rangeA = new RangedUri(null, FULL_URI, 0, 10); + RangedUri rangeB = new RangedUri(null, FULL_URI, 10, 10); + RangedUri expected = new RangedUri(null, FULL_URI, 0, 20); + assertMerge(rangeA, rangeB, expected); + } + + public void testMergeUnbounded() { + RangedUri rangeA = new RangedUri(null, FULL_URI, 0, 10); + RangedUri rangeB = new RangedUri(null, FULL_URI, 10, -1); + RangedUri expected = new RangedUri(null, FULL_URI, 0, -1); + assertMerge(rangeA, rangeB, expected); + } + + public void testNonMerge() { + // A and B do not overlap, so should not merge + RangedUri rangeA = new RangedUri(null, FULL_URI, 0, 10); + RangedUri rangeB = new RangedUri(null, FULL_URI, 11, 10); + assertNonMerge(rangeA, rangeB); + + // A and B do not overlap, so should not merge + rangeA = new RangedUri(null, FULL_URI, 0, 10); + rangeB = new RangedUri(null, FULL_URI, 11, -1); + assertNonMerge(rangeA, rangeB); + + // A and B are bounded but overlap, so should not merge + rangeA = new RangedUri(null, FULL_URI, 0, 11); + rangeB = new RangedUri(null, FULL_URI, 10, 10); + assertNonMerge(rangeA, rangeB); + + // A and B overlap due to unboundedness, so should not merge + rangeA = new RangedUri(null, FULL_URI, 0, -1); + rangeB = new RangedUri(null, FULL_URI, 10, -1); + assertNonMerge(rangeA, rangeB); + + } + + private void assertMerge(RangedUri rangeA, RangedUri rangeB, RangedUri expected) { + RangedUri merged = rangeA.attemptMerge(rangeB); + assertEquals(expected, merged); + merged = rangeB.attemptMerge(rangeA); + assertEquals(expected, merged); + } + + private void assertNonMerge(RangedUri rangeA, RangedUri rangeB) { + RangedUri merged = rangeA.attemptMerge(rangeB); + assertNull(merged); + merged = rangeB.attemptMerge(rangeA); + assertNull(merged); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/dash/mpd/RepresentationTest.java b/library/src/test/java/com/google/android/exoplayer/dash/mpd/RepresentationTest.java new file mode 100644 index 0000000000..19d2226014 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/dash/mpd/RepresentationTest.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.dash.mpd; + +import com.google.android.exoplayer.chunk.Format; +import com.google.android.exoplayer.dash.mpd.SegmentBase.SingleSegmentBase; +import com.google.android.exoplayer.util.MimeTypes; + +import junit.framework.TestCase; + +/** + * Unit test for {@link Representation}. + */ +public class RepresentationTest extends TestCase { + + public void testGetCacheKey() { + String uri = "http://www.google.com"; + SegmentBase base = new SingleSegmentBase(new RangedUri(uri, null, 0, 1), 1, 0, uri, 1, 1); + Format format = new Format("0", MimeTypes.VIDEO_MP4, 1920, 1080, 0, 0, 2500000); + Representation representation = Representation.newInstance(-1, -1, "test_stream_1", 3, + format, base); + assertEquals("test_stream_1.0.3", representation.getCacheKey()); + + format = new Format("150", MimeTypes.VIDEO_MP4, 1920, 1080, 0, 0, 2500000); + representation = Representation.newInstance(-1, -1, "test_stream_1", -1, format, base); + assertEquals("test_stream_1.150.-1", representation.getCacheKey()); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/dash/mpd/UrlTemplateTest.java b/library/src/test/java/com/google/android/exoplayer/dash/mpd/UrlTemplateTest.java new file mode 100644 index 0000000000..55084cc4c9 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/dash/mpd/UrlTemplateTest.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.dash.mpd; + +import junit.framework.TestCase; + +/** + * Unit test for {@link UrlTemplate}. + */ +public class UrlTemplateTest extends TestCase { + + public void testRealExamples() { + String template = "QualityLevels($Bandwidth$)/Fragments(video=$Time$,format=mpd-time-csf)"; + UrlTemplate urlTemplate = UrlTemplate.compile(template); + String url = urlTemplate.buildUri("abc1", 10, 650000, 5000); + assertEquals("QualityLevels(650000)/Fragments(video=5000,format=mpd-time-csf)", url); + + template = "$RepresentationID$/$Number$"; + urlTemplate = UrlTemplate.compile(template); + url = urlTemplate.buildUri("abc1", 10, 650000, 5000); + assertEquals("abc1/10", url); + + template = "chunk_ctvideo_cfm4s_rid$RepresentationID$_cn$Number$_w2073857842_mpd.m4s"; + urlTemplate = UrlTemplate.compile(template); + url = urlTemplate.buildUri("abc1", 10, 650000, 5000); + assertEquals("chunk_ctvideo_cfm4s_ridabc1_cn10_w2073857842_mpd.m4s", url); + } + + public void testFull() { + String template = "$Bandwidth$_a_$RepresentationID$_b_$Time$_c_$Number$"; + UrlTemplate urlTemplate = UrlTemplate.compile(template); + String url = urlTemplate.buildUri("abc1", 10, 650000, 5000); + assertEquals("650000_a_abc1_b_5000_c_10", url); + } + + public void testFullWithDollarEscaping() { + String template = "$$$Bandwidth$$$_a$$_$RepresentationID$_b_$Time$_c_$Number$$$"; + UrlTemplate urlTemplate = UrlTemplate.compile(template); + String url = urlTemplate.buildUri("abc1", 10, 650000, 5000); + assertEquals("$650000$_a$_abc1_b_5000_c_10$", url); + } + + public void testInvalidSubstitution() { + String template = "$IllegalId$"; + try { + UrlTemplate.compile(template); + assertTrue(false); + } catch (IllegalArgumentException e) { + // Expected. + } + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/hls/HlsMasterPlaylistParserTest.java b/library/src/test/java/com/google/android/exoplayer/hls/HlsMasterPlaylistParserTest.java new file mode 100644 index 0000000000..bd5126160a --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/hls/HlsMasterPlaylistParserTest.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.hls; + +import com.google.android.exoplayer.C; + +import junit.framework.TestCase; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.List; + +/** + * Test for {@link HlsMasterPlaylistParserTest} + */ +public class HlsMasterPlaylistParserTest extends TestCase { + + public void testParseMasterPlaylist() { + String playlistUrl = "https://example.com/test.m3u8"; + String playlistString = "#EXTM3U\n" + + "\n" + + "#EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS=\"mp4a.40.2,avc1.66.30\",RESOLUTION=304x128\n" + + "http://example.com/low.m3u8\n" + + "\n" + + "#EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS=\"mp4a.40.2 , avc1.66.30 \"\n" + + "http://example.com/spaces_in_codecs.m3u8\n" + + "\n" + + "#EXT-X-STREAM-INF:BANDWIDTH=2560000,RESOLUTION=384x160\n" + + "http://example.com/mid.m3u8\n" + + "\n" + + "#EXT-X-STREAM-INF:BANDWIDTH=7680000\n" + + "http://example.com/hi.m3u8\n" + + "\n" + + "#EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS=\"mp4a.40.5\"\n" + + "http://example.com/audio-only.m3u8"; + ByteArrayInputStream inputStream = new ByteArrayInputStream( + playlistString.getBytes(Charset.forName(C.UTF8_NAME))); + try { + HlsPlaylist playlist = new HlsPlaylistParser().parse(playlistUrl, inputStream); + assertNotNull(playlist); + assertEquals(HlsPlaylist.TYPE_MASTER, playlist.type); + + HlsMasterPlaylist masterPlaylist = (HlsMasterPlaylist) playlist; + + List variants = masterPlaylist.variants; + assertNotNull(variants); + assertEquals(5, variants.size()); + + assertEquals(0, variants.get(0).index); + assertEquals(1280000, variants.get(0).bandwidth); + assertNotNull(variants.get(0).codecs); + assertEquals(2, variants.get(0).codecs.length); + assertEquals("mp4a.40.2", variants.get(0).codecs[0]); + assertEquals("avc1.66.30", variants.get(0).codecs[1]); + assertEquals(304, variants.get(0).width); + assertEquals(128, variants.get(0).height); + assertEquals("http://example.com/low.m3u8", variants.get(0).url); + + assertEquals(1, variants.get(1).index); + assertEquals(1280000, variants.get(1).bandwidth); + assertNotNull(variants.get(1).codecs); + assertEquals(2, variants.get(1).codecs.length); + assertEquals("mp4a.40.2", variants.get(1).codecs[0]); + assertEquals("avc1.66.30", variants.get(1).codecs[1]); + assertEquals("http://example.com/spaces_in_codecs.m3u8", variants.get(1).url); + + assertEquals(2, variants.get(2).index); + assertEquals(2560000, variants.get(2).bandwidth); + assertEquals(null, variants.get(2).codecs); + assertEquals(384, variants.get(2).width); + assertEquals(160, variants.get(2).height); + assertEquals("http://example.com/mid.m3u8", variants.get(2).url); + + assertEquals(3, variants.get(3).index); + assertEquals(7680000, variants.get(3).bandwidth); + assertEquals(null, variants.get(3).codecs); + assertEquals(-1, variants.get(3).width); + assertEquals(-1, variants.get(3).height); + assertEquals("http://example.com/hi.m3u8", variants.get(3).url); + + assertEquals(4, variants.get(4).index); + assertEquals(65000, variants.get(4).bandwidth); + assertNotNull(variants.get(4).codecs); + assertEquals(1, variants.get(4).codecs.length); + assertEquals("mp4a.40.5", variants.get(4).codecs[0]); + assertEquals(-1, variants.get(4).width); + assertEquals(-1, variants.get(4).height); + assertEquals("http://example.com/audio-only.m3u8", variants.get(4).url); + } catch (IOException exception) { + fail(exception.getMessage()); + } + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/hls/HlsMediaPlaylistParserTest.java b/library/src/test/java/com/google/android/exoplayer/hls/HlsMediaPlaylistParserTest.java new file mode 100644 index 0000000000..7d63db1efe --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/hls/HlsMediaPlaylistParserTest.java @@ -0,0 +1,135 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.hls; + +import com.google.android.exoplayer.C; + +import junit.framework.TestCase; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.util.List; +import java.util.Locale; + +/** + * Test for {@link HlsMediaPlaylistParserTest} + */ +public class HlsMediaPlaylistParserTest extends TestCase { + + public void testParseMediaPlaylist() { + String playlistUrl = "https://example.com/test.m3u8"; + String playlistString = "#EXTM3U\n" + + "#EXT-X-VERSION:3\n" + + "#EXT-X-TARGETDURATION:8\n" + + "#EXT-X-MEDIA-SEQUENCE:2679\n" + + "#EXT-X-ALLOW-CACHE:YES\n" + + "\n" + + "#EXTINF:7.975,\n" + + "#EXT-X-BYTERANGE:51370@0\n" + + "https://priv.example.com/fileSequence2679.ts\n" + + "\n" + + "#EXT-X-KEY:METHOD=AES-128,URI=\"https://priv.example.com/key.php?r=2680\",IV=0x1566B\n" + + "#EXTINF:7.975,\n" + + "#EXT-X-BYTERANGE:51501@51370\n" + + "https://priv.example.com/fileSequence2680.ts\n" + + "\n" + + "#EXT-X-KEY:METHOD=NONE\n" + + "#EXTINF:7.941,\n" + + "#EXT-X-BYTERANGE:51501\n" // @102871 + + "https://priv.example.com/fileSequence2681.ts\n" + + "\n" + + "#EXT-X-DISCONTINUITY\n" + + "#EXT-X-KEY:METHOD=AES-128,URI=\"https://priv.example.com/key.php?r=2682\"\n" + + "#EXTINF:7.975,\n" + + "#EXT-X-BYTERANGE:51740\n" // @154372 + + "https://priv.example.com/fileSequence2682.ts\n" + + "\n" + + "#EXTINF:7.975,\n" + + "https://priv.example.com/fileSequence2683.ts\n" + + "#EXT-X-ENDLIST"; + InputStream inputStream = new ByteArrayInputStream( + playlistString.getBytes(Charset.forName(C.UTF8_NAME))); + try { + HlsPlaylist playlist = new HlsPlaylistParser().parse(playlistUrl, inputStream); + assertNotNull(playlist); + assertEquals(HlsPlaylist.TYPE_MEDIA, playlist.type); + + HlsMediaPlaylist mediaPlaylist = (HlsMediaPlaylist) playlist; + + assertEquals(2679, mediaPlaylist.mediaSequence); + assertEquals(8, mediaPlaylist.targetDurationSecs); + assertEquals(3, mediaPlaylist.version); + assertEquals(false, mediaPlaylist.live); + List segments = mediaPlaylist.segments; + assertNotNull(segments); + assertEquals(5, segments.size()); + + assertEquals(false, segments.get(0).discontinuity); + assertEquals(7.975, segments.get(0).durationSecs); + assertEquals(null, segments.get(0).encryptionMethod); + assertEquals(null, segments.get(0).encryptionKeyUri); + assertEquals(null, segments.get(0).encryptionIV); + assertEquals(51370, segments.get(0).byterangeLength); + assertEquals(0, segments.get(0).byterangeOffset); + assertEquals("https://priv.example.com/fileSequence2679.ts", segments.get(0).url); + + assertEquals(false, segments.get(1).discontinuity); + assertEquals(7.975, segments.get(1).durationSecs); + assertEquals("AES-128", segments.get(1).encryptionMethod); + assertEquals("https://priv.example.com/key.php?r=2680", segments.get(1).encryptionKeyUri); + assertEquals("0x1566B", segments.get(1).encryptionIV); + assertEquals(51501, segments.get(1).byterangeLength); + assertEquals(51370, segments.get(1).byterangeOffset); + assertEquals("https://priv.example.com/fileSequence2680.ts", segments.get(1).url); + + assertEquals(false, segments.get(2).discontinuity); + assertEquals(7.941, segments.get(2).durationSecs); + assertEquals(HlsMediaPlaylist.ENCRYPTION_METHOD_NONE, segments.get(2).encryptionMethod); + assertEquals(null, segments.get(2).encryptionKeyUri); + assertEquals(null, segments.get(2).encryptionIV); + assertEquals(51501, segments.get(2).byterangeLength); + assertEquals(102871, segments.get(2).byterangeOffset); + assertEquals("https://priv.example.com/fileSequence2681.ts", segments.get(2).url); + + assertEquals(true, segments.get(3).discontinuity); + assertEquals(7.975, segments.get(3).durationSecs); + assertEquals("AES-128", segments.get(3).encryptionMethod); + assertEquals("https://priv.example.com/key.php?r=2682", segments.get(3).encryptionKeyUri); + // 0xA7A == 2682. + assertNotNull(segments.get(3).encryptionIV); + assertEquals("A7A", segments.get(3).encryptionIV.toUpperCase(Locale.getDefault())); + assertEquals(51740, segments.get(3).byterangeLength); + assertEquals(154372, segments.get(3).byterangeOffset); + assertEquals("https://priv.example.com/fileSequence2682.ts", segments.get(3).url); + + assertEquals(false, segments.get(4).discontinuity); + assertEquals(7.975, segments.get(4).durationSecs); + assertEquals("AES-128", segments.get(4).encryptionMethod); + assertEquals("https://priv.example.com/key.php?r=2682", segments.get(4).encryptionKeyUri); + // 0xA7A == 2682. + assertNotNull(segments.get(4).encryptionIV); + assertEquals("A7A", segments.get(4).encryptionIV.toUpperCase(Locale.getDefault())); + assertEquals(C.LENGTH_UNBOUNDED, segments.get(4).byterangeLength); + assertEquals(0, segments.get(4).byterangeOffset); + assertEquals("https://priv.example.com/fileSequence2683.ts", segments.get(4).url); + } catch (IOException exception) { + fail(exception.getMessage()); + } + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/metadata/Id3ParserTest.java b/library/src/test/java/com/google/android/exoplayer/metadata/Id3ParserTest.java new file mode 100644 index 0000000000..1dead0a139 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/metadata/Id3ParserTest.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.metadata; + +import junit.framework.TestCase; + +import java.util.Map; + +/** + * Test for {@link Id3Parser} + */ +public class Id3ParserTest extends TestCase { + + public void testParseTxxxFrames() { + byte[] rawId3 = new byte[] { 73, 68, 51, 4, 0, 0, 0, 0, 0, 41, 84, 88, 88, 88, 0, 0, 0, 31, + 0, 0, 3, 0, 109, 100, 105, 97, 108, 111, 103, 95, 86, 73, 78, 68, 73, 67, 79, 49, 53, 50, + 55, 54, 54, 52, 95, 115, 116, 97, 114, 116, 0 }; + + Id3Parser parser = new Id3Parser(); + try { + Map metadata = parser.parse(rawId3, rawId3.length); + assertNotNull(metadata); + assertEquals(1, metadata.size()); + TxxxMetadata txxx = (TxxxMetadata) metadata.get(TxxxMetadata.TYPE); + assertNotNull(txxx); + assertEquals("", txxx.description); + assertEquals("mdialog_VINDICO1527664_start", txxx.value); + } catch (Exception exception) { + fail(exception.getMessage()); + } + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/mp4/Mp4UtilTest.java b/library/src/test/java/com/google/android/exoplayer/mp4/Mp4UtilTest.java new file mode 100644 index 0000000000..fe304b14b6 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/mp4/Mp4UtilTest.java @@ -0,0 +1,133 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.mp4; + +import junit.framework.TestCase; + +import java.util.Arrays; + +/** + * Tests for {@link Mp4Util}. + */ +public class Mp4UtilTest extends TestCase { + + private static final int TEST_PARTIAL_NAL_POSITION = 4; + private static final int TEST_NAL_POSITION = 10; + + public void testFindNalUnit() { + byte[] data = buildTestData(); + + // Should find NAL unit. + int result = Mp4Util.findNalUnit(data, 0, data.length); + assertEquals(TEST_NAL_POSITION, result); + // Should find NAL unit whose prefix ends one byte before the limit. + result = Mp4Util.findNalUnit(data, 0, TEST_NAL_POSITION + 4); + assertEquals(TEST_NAL_POSITION, result); + // Shouldn't find NAL unit whose prefix ends at the limit (since the limit is exclusive). + result = Mp4Util.findNalUnit(data, 0, TEST_NAL_POSITION + 3); + assertEquals(TEST_NAL_POSITION + 3, result); + // Should find NAL unit whose prefix starts at the offset. + result = Mp4Util.findNalUnit(data, TEST_NAL_POSITION, data.length); + assertEquals(TEST_NAL_POSITION, result); + // Shouldn't find NAL unit whose prefix starts one byte past the offset. + result = Mp4Util.findNalUnit(data, TEST_NAL_POSITION + 1, data.length); + assertEquals(data.length, result); + } + + public void testFindNalUnitWithPrefix() { + byte[] data = buildTestData(); + + // First byte of NAL unit in data1, rest in data2. + boolean[] prefixFlags = new boolean[3]; + byte[] data1 = Arrays.copyOfRange(data, 0, TEST_NAL_POSITION + 1); + byte[] data2 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 1, data.length); + int result = Mp4Util.findNalUnit(data1, 0, data1.length, prefixFlags); + assertEquals(data1.length, result); + result = Mp4Util.findNalUnit(data2, 0, data2.length, prefixFlags); + assertEquals(-1, result); + assertPrefixFlagsCleared(prefixFlags); + + // First three bytes of NAL unit in data1, rest in data2. + prefixFlags = new boolean[3]; + data1 = Arrays.copyOfRange(data, 0, TEST_NAL_POSITION + 3); + data2 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 3, data.length); + result = Mp4Util.findNalUnit(data1, 0, data1.length, prefixFlags); + assertEquals(data1.length, result); + result = Mp4Util.findNalUnit(data2, 0, data2.length, prefixFlags); + assertEquals(-3, result); + assertPrefixFlagsCleared(prefixFlags); + + // First byte of NAL unit in data1, second byte in data2, rest in data3. + prefixFlags = new boolean[3]; + data1 = Arrays.copyOfRange(data, 0, TEST_NAL_POSITION + 1); + data2 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 1, TEST_NAL_POSITION + 2); + byte[] data3 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 2, data.length); + result = Mp4Util.findNalUnit(data1, 0, data1.length, prefixFlags); + assertEquals(data1.length, result); + result = Mp4Util.findNalUnit(data2, 0, data2.length, prefixFlags); + assertEquals(data2.length, result); + result = Mp4Util.findNalUnit(data3, 0, data3.length, prefixFlags); + assertEquals(-2, result); + assertPrefixFlagsCleared(prefixFlags); + + // NAL unit split with one byte in four arrays. + prefixFlags = new boolean[3]; + data1 = Arrays.copyOfRange(data, 0, TEST_NAL_POSITION + 1); + data2 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 1, TEST_NAL_POSITION + 2); + data3 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 2, TEST_NAL_POSITION + 3); + byte[] data4 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 2, data.length); + result = Mp4Util.findNalUnit(data1, 0, data1.length, prefixFlags); + assertEquals(data1.length, result); + result = Mp4Util.findNalUnit(data2, 0, data2.length, prefixFlags); + assertEquals(data2.length, result); + result = Mp4Util.findNalUnit(data3, 0, data3.length, prefixFlags); + assertEquals(data3.length, result); + result = Mp4Util.findNalUnit(data4, 0, data4.length, prefixFlags); + assertEquals(-3, result); + assertPrefixFlagsCleared(prefixFlags); + + // NAL unit entirely in data2. data1 ends with partial prefix. + prefixFlags = new boolean[3]; + data1 = Arrays.copyOfRange(data, 0, TEST_PARTIAL_NAL_POSITION + 2); + data2 = Arrays.copyOfRange(data, TEST_PARTIAL_NAL_POSITION + 2, data.length); + result = Mp4Util.findNalUnit(data1, 0, data1.length, prefixFlags); + assertEquals(data1.length, result); + result = Mp4Util.findNalUnit(data2, 0, data2.length, prefixFlags); + assertEquals(4, result); + assertPrefixFlagsCleared(prefixFlags); + } + + private static byte[] buildTestData() { + byte[] data = new byte[20]; + for (int i = 0; i < data.length; i++) { + data[i] = (byte) 0xFF; + } + // Insert an incomplete NAL unit start code. + data[TEST_PARTIAL_NAL_POSITION] = 0; + data[TEST_PARTIAL_NAL_POSITION + 1] = 0; + // Insert a complete NAL unit start code. + data[TEST_NAL_POSITION] = 0; + data[TEST_NAL_POSITION + 1] = 0; + data[TEST_NAL_POSITION + 2] = 1; + data[TEST_NAL_POSITION + 3] = 5; + return data; + } + + private static void assertPrefixFlagsCleared(boolean[] flags) { + assertEquals(false, flags[0] || flags[1] || flags[2]); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/testutil/Util.java b/library/src/test/java/com/google/android/exoplayer/testutil/Util.java new file mode 100644 index 0000000000..5f86b51829 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/testutil/Util.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.testutil; + +import java.util.Random; + +/** + * Utility methods for tests. + */ +public class Util { + + private Util() {} + + public static byte[] buildTestData(int length) { + return buildTestData(length, length); + } + + public static byte[] buildTestData(int length, int seed) { + Random random = new Random(seed); + byte[] source = new byte[length]; + random.nextBytes(source); + return source; + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/text/webvtt/WebvttParserTest.java b/library/src/test/java/com/google/android/exoplayer/text/webvtt/WebvttParserTest.java new file mode 100644 index 0000000000..426c5152df --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/text/webvtt/WebvttParserTest.java @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.text.webvtt; + +import com.google.android.exoplayer.C; + +import android.test.InstrumentationTestCase; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Unit test for {@link WebvttParser}. + */ +public class WebvttParserTest extends InstrumentationTestCase { + + private static final String TYPICAL_WEBVTT_FILE = "webvtt/typical"; + private static final String TYPICAL_WITH_IDS_WEBVTT_FILE = "webvtt/typical_with_identifiers"; + private static final String TYPICAL_WITH_TAGS_WEBVTT_FILE = "webvtt/typical_with_tags"; + private static final String EMPTY_WEBVTT_FILE = "webvtt/empty"; + + public void testParseNullWebvttFile() throws IOException { + WebvttParser parser = new WebvttParser(); + InputStream inputStream = + getInstrumentation().getContext().getResources().getAssets().open(EMPTY_WEBVTT_FILE); + + try { + parser.parse(inputStream, C.UTF8_NAME, 0); + fail("Expected IOException"); + } catch (IOException expected) { + // Do nothing. + } + } + + public void testParseTypicalWebvttFile() throws IOException { + WebvttParser parser = new WebvttParser(); + InputStream inputStream = + getInstrumentation().getContext().getResources().getAssets().open(TYPICAL_WEBVTT_FILE); + WebvttSubtitle subtitle = parser.parse(inputStream, C.UTF8_NAME, 0); + + // test start time and event count + long startTimeUs = 5000000; + assertEquals(startTimeUs, subtitle.getStartTime()); + assertEquals(4, subtitle.getEventTimeCount()); + + // test first cue + assertEquals(startTimeUs, subtitle.getEventTime(0)); + assertEquals("This is the first subtitle.", + subtitle.getText(subtitle.getEventTime(0))); + assertEquals(startTimeUs + 1234000, subtitle.getEventTime(1)); + + // test second cue + assertEquals(startTimeUs + 2345000, subtitle.getEventTime(2)); + assertEquals("This is the second subtitle.", + subtitle.getText(subtitle.getEventTime(2))); + assertEquals(startTimeUs + 3456000, subtitle.getEventTime(3)); + } + + public void testParseTypicalWithIdsWebvttFile() throws IOException { + WebvttParser parser = new WebvttParser(); + InputStream inputStream = + getInstrumentation().getContext().getResources().getAssets() + .open(TYPICAL_WITH_IDS_WEBVTT_FILE); + WebvttSubtitle subtitle = parser.parse(inputStream, C.UTF8_NAME, 0); + + // test start time and event count + long startTimeUs = 5000000; + assertEquals(startTimeUs, subtitle.getStartTime()); + assertEquals(4, subtitle.getEventTimeCount()); + + // test first cue + assertEquals(startTimeUs, subtitle.getEventTime(0)); + assertEquals("This is the first subtitle.", + subtitle.getText(subtitle.getEventTime(0))); + assertEquals(startTimeUs + 1234000, subtitle.getEventTime(1)); + + // test second cue + assertEquals(startTimeUs + 2345000, subtitle.getEventTime(2)); + assertEquals("This is the second subtitle.", + subtitle.getText(subtitle.getEventTime(2))); + assertEquals(startTimeUs + 3456000, subtitle.getEventTime(3)); + } + + public void testParseTypicalWithTagsWebvttFile() throws IOException { + WebvttParser parser = new WebvttParser(); + InputStream inputStream = + getInstrumentation().getContext().getResources().getAssets() + .open(TYPICAL_WITH_TAGS_WEBVTT_FILE); + WebvttSubtitle subtitle = parser.parse(inputStream, C.UTF8_NAME, 0); + + // test start time and event count + long startTimeUs = 5000000; + assertEquals(startTimeUs, subtitle.getStartTime()); + assertEquals(8, subtitle.getEventTimeCount()); + + // test first cue + assertEquals(startTimeUs, subtitle.getEventTime(0)); + assertEquals("This is the first subtitle.", + subtitle.getText(subtitle.getEventTime(0))); + assertEquals(startTimeUs + 1234000, subtitle.getEventTime(1)); + + // test second cue + assertEquals(startTimeUs + 2345000, subtitle.getEventTime(2)); + assertEquals("This is the second subtitle.", + subtitle.getText(subtitle.getEventTime(2))); + assertEquals(startTimeUs + 3456000, subtitle.getEventTime(3)); + + // test third cue + assertEquals(startTimeUs + 4000000, subtitle.getEventTime(4)); + assertEquals("This is the third subtitle.", + subtitle.getText(subtitle.getEventTime(4))); + assertEquals(startTimeUs + 5000000, subtitle.getEventTime(5)); + + // test fourth cue + assertEquals(startTimeUs + 6000000, subtitle.getEventTime(6)); + assertEquals("This is the &subtitle.", + subtitle.getText(subtitle.getEventTime(6))); + assertEquals(startTimeUs + 7000000, subtitle.getEventTime(7)); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/text/webvtt/WebvttSubtitleTest.java b/library/src/test/java/com/google/android/exoplayer/text/webvtt/WebvttSubtitleTest.java new file mode 100644 index 0000000000..e95482f0fb --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/text/webvtt/WebvttSubtitleTest.java @@ -0,0 +1,204 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.text.webvtt; + +import junit.framework.TestCase; + +/** + * Unit test for {@link WebvttSubtitle}. + */ +public class WebvttSubtitleTest extends TestCase { + + private static final String FIRST_SUBTITLE_STRING = "This is the first subtitle."; + private static final String SECOND_SUBTITLE_STRING = "This is the second subtitle."; + private static final String FIRST_AND_SECOND_SUBTITLE_STRING = + FIRST_SUBTITLE_STRING + SECOND_SUBTITLE_STRING; + + private WebvttSubtitle emptySubtitle = new WebvttSubtitle(new String[] {}, 0, new long[] {}); + + private WebvttSubtitle simpleSubtitle = new WebvttSubtitle( + new String[] {FIRST_SUBTITLE_STRING, SECOND_SUBTITLE_STRING}, 0, + new long[] {1000000, 2000000, 3000000, 4000000}); + + private WebvttSubtitle overlappingSubtitle = new WebvttSubtitle( + new String[] {FIRST_SUBTITLE_STRING, SECOND_SUBTITLE_STRING}, 0, + new long[] {1000000, 3000000, 2000000, 4000000}); + + private WebvttSubtitle nestedSubtitle = new WebvttSubtitle( + new String[] {FIRST_SUBTITLE_STRING, SECOND_SUBTITLE_STRING}, 0, + new long[] {1000000, 4000000, 2000000, 3000000}); + + public void testEventCount() { + assertEquals(0, emptySubtitle.getEventTimeCount()); + assertEquals(4, simpleSubtitle.getEventTimeCount()); + assertEquals(4, overlappingSubtitle.getEventTimeCount()); + assertEquals(4, nestedSubtitle.getEventTimeCount()); + } + + public void testStartTime() { + assertEquals(0, emptySubtitle.getStartTime()); + assertEquals(0, simpleSubtitle.getStartTime()); + assertEquals(0, overlappingSubtitle.getStartTime()); + assertEquals(0, nestedSubtitle.getStartTime()); + } + + public void testLastEventTime() { + assertEquals(-1, emptySubtitle.getLastEventTime()); + assertEquals(4000000, simpleSubtitle.getLastEventTime()); + assertEquals(4000000, overlappingSubtitle.getLastEventTime()); + assertEquals(4000000, nestedSubtitle.getLastEventTime()); + } + + public void testSimpleSubtitleEventTimes() { + testSubtitleEventTimesHelper(simpleSubtitle); + } + + public void testSimpleSubtitleEventIndices() { + testSubtitleEventIndicesHelper(simpleSubtitle); + } + + public void testSimpleSubtitleText() { + // Test before first subtitle + assertNull(simpleSubtitle.getText(0)); + assertNull(simpleSubtitle.getText(500000)); + assertNull(simpleSubtitle.getText(999999)); + + // Test first subtitle + assertEquals(FIRST_SUBTITLE_STRING, simpleSubtitle.getText(1000000)); + assertEquals(FIRST_SUBTITLE_STRING, simpleSubtitle.getText(1500000)); + assertEquals(FIRST_SUBTITLE_STRING, simpleSubtitle.getText(1999999)); + + // Test after first subtitle, before second subtitle + assertNull(simpleSubtitle.getText(2000000)); + assertNull(simpleSubtitle.getText(2500000)); + assertNull(simpleSubtitle.getText(2999999)); + + // Test second subtitle + assertEquals(SECOND_SUBTITLE_STRING, simpleSubtitle.getText(3000000)); + assertEquals(SECOND_SUBTITLE_STRING, simpleSubtitle.getText(3500000)); + assertEquals(SECOND_SUBTITLE_STRING, simpleSubtitle.getText(3999999)); + + // Test after second subtitle + assertNull(simpleSubtitle.getText(4000000)); + assertNull(simpleSubtitle.getText(4500000)); + assertNull(simpleSubtitle.getText(Long.MAX_VALUE)); + } + + public void testOverlappingSubtitleEventTimes() { + testSubtitleEventTimesHelper(overlappingSubtitle); + } + + public void testOverlappingSubtitleEventIndices() { + testSubtitleEventIndicesHelper(overlappingSubtitle); + } + + public void testOverlappingSubtitleText() { + // Test before first subtitle + assertNull(overlappingSubtitle.getText(0)); + assertNull(overlappingSubtitle.getText(500000)); + assertNull(overlappingSubtitle.getText(999999)); + + // Test first subtitle + assertEquals(FIRST_SUBTITLE_STRING, overlappingSubtitle.getText(1000000)); + assertEquals(FIRST_SUBTITLE_STRING, overlappingSubtitle.getText(1500000)); + assertEquals(FIRST_SUBTITLE_STRING, overlappingSubtitle.getText(1999999)); + + // Test after first and second subtitle + assertEquals(FIRST_AND_SECOND_SUBTITLE_STRING, overlappingSubtitle.getText(2000000)); + assertEquals(FIRST_AND_SECOND_SUBTITLE_STRING, overlappingSubtitle.getText(2500000)); + assertEquals(FIRST_AND_SECOND_SUBTITLE_STRING, overlappingSubtitle.getText(2999999)); + + // Test second subtitle + assertEquals(SECOND_SUBTITLE_STRING, overlappingSubtitle.getText(3000000)); + assertEquals(SECOND_SUBTITLE_STRING, overlappingSubtitle.getText(3500000)); + assertEquals(SECOND_SUBTITLE_STRING, overlappingSubtitle.getText(3999999)); + + // Test after second subtitle + assertNull(overlappingSubtitle.getText(4000000)); + assertNull(overlappingSubtitle.getText(4500000)); + assertNull(overlappingSubtitle.getText(Long.MAX_VALUE)); + } + + public void testNestedSubtitleEventTimes() { + testSubtitleEventTimesHelper(nestedSubtitle); + } + + public void testNestedSubtitleEventIndices() { + testSubtitleEventIndicesHelper(nestedSubtitle); + } + + public void testNestedSubtitleText() { + // Test before first subtitle + assertNull(nestedSubtitle.getText(0)); + assertNull(nestedSubtitle.getText(500000)); + assertNull(nestedSubtitle.getText(999999)); + + // Test first subtitle + assertEquals(FIRST_SUBTITLE_STRING, nestedSubtitle.getText(1000000)); + assertEquals(FIRST_SUBTITLE_STRING, nestedSubtitle.getText(1500000)); + assertEquals(FIRST_SUBTITLE_STRING, nestedSubtitle.getText(1999999)); + + // Test after first and second subtitle + assertEquals(FIRST_AND_SECOND_SUBTITLE_STRING, nestedSubtitle.getText(2000000)); + assertEquals(FIRST_AND_SECOND_SUBTITLE_STRING, nestedSubtitle.getText(2500000)); + assertEquals(FIRST_AND_SECOND_SUBTITLE_STRING, nestedSubtitle.getText(2999999)); + + // Test first subtitle + assertEquals(FIRST_SUBTITLE_STRING, nestedSubtitle.getText(3000000)); + assertEquals(FIRST_SUBTITLE_STRING, nestedSubtitle.getText(3500000)); + assertEquals(FIRST_SUBTITLE_STRING, nestedSubtitle.getText(3999999)); + + // Test after second subtitle + assertNull(nestedSubtitle.getText(4000000)); + assertNull(nestedSubtitle.getText(4500000)); + assertNull(nestedSubtitle.getText(Long.MAX_VALUE)); + } + + private void testSubtitleEventTimesHelper(WebvttSubtitle subtitle) { + assertEquals(1000000, subtitle.getEventTime(0)); + assertEquals(2000000, subtitle.getEventTime(1)); + assertEquals(3000000, subtitle.getEventTime(2)); + assertEquals(4000000, subtitle.getEventTime(3)); + } + + private void testSubtitleEventIndicesHelper(WebvttSubtitle subtitle) { + // Test first event + assertEquals(0, subtitle.getNextEventTimeIndex(0)); + assertEquals(0, subtitle.getNextEventTimeIndex(500000)); + assertEquals(0, subtitle.getNextEventTimeIndex(999999)); + + // Test second event + assertEquals(1, subtitle.getNextEventTimeIndex(1000000)); + assertEquals(1, subtitle.getNextEventTimeIndex(1500000)); + assertEquals(1, subtitle.getNextEventTimeIndex(1999999)); + + // Test third event + assertEquals(2, subtitle.getNextEventTimeIndex(2000000)); + assertEquals(2, subtitle.getNextEventTimeIndex(2500000)); + assertEquals(2, subtitle.getNextEventTimeIndex(2999999)); + + // Test fourth event + assertEquals(3, subtitle.getNextEventTimeIndex(3000000)); + assertEquals(3, subtitle.getNextEventTimeIndex(3500000)); + assertEquals(3, subtitle.getNextEventTimeIndex(3999999)); + + // Test null event (i.e. look for events after the last event) + assertEquals(-1, subtitle.getNextEventTimeIndex(4000000)); + assertEquals(-1, subtitle.getNextEventTimeIndex(4500000)); + assertEquals(-1, subtitle.getNextEventTimeIndex(Long.MAX_VALUE)); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/upstream/ByteArrayDataSourceTest.java b/library/src/test/java/com/google/android/exoplayer/upstream/ByteArrayDataSourceTest.java new file mode 100644 index 0000000000..550cb149a8 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/upstream/ByteArrayDataSourceTest.java @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.upstream; + +import com.google.android.exoplayer.C; + +import junit.framework.TestCase; + +import java.io.IOException; + +/** + * Unit tests for {@link ByteArrayDataSource}. + */ +public class ByteArrayDataSourceTest extends TestCase { + + private static final byte[] TEST_DATA = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + private static final byte[] TEST_DATA_ODD = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + + public void testFullReadSingleBytes() { + readTestData(TEST_DATA, 0, C.LENGTH_UNBOUNDED, 1, 0, 1, false); + } + + public void testFullReadAllBytes() { + readTestData(TEST_DATA, 0, C.LENGTH_UNBOUNDED, 100, 0, 100, false); + } + + public void testLimitReadSingleBytes() { + // Limit set to the length of the data. + readTestData(TEST_DATA, 0, TEST_DATA.length, 1, 0, 1, false); + // And less. + readTestData(TEST_DATA, 0, 6, 1, 0, 1, false); + } + + public void testFullReadTwoBytes() { + // Try with the total data length an exact multiple of the size of each individual read. + readTestData(TEST_DATA, 0, C.LENGTH_UNBOUNDED, 2, 0, 2, false); + // And not. + readTestData(TEST_DATA_ODD, 0, C.LENGTH_UNBOUNDED, 2, 0, 2, false); + } + + public void testLimitReadTwoBytes() { + // Try with the limit an exact multiple of the size of each individual read. + readTestData(TEST_DATA, 0, 6, 2, 0, 2, false); + // And not. + readTestData(TEST_DATA, 0, 7, 2, 0, 2, false); + } + + public void testReadFromValidOffsets() { + // Read from an offset without bound. + readTestData(TEST_DATA, 1, C.LENGTH_UNBOUNDED, 1, 0, 1, false); + // And with bound. + readTestData(TEST_DATA, 1, 6, 1, 0, 1, false); + // Read from the last possible offset without bound. + readTestData(TEST_DATA, TEST_DATA.length - 1, C.LENGTH_UNBOUNDED, 1, 0, 1, false); + // And with bound. + readTestData(TEST_DATA, TEST_DATA.length - 1, 1, 1, 0, 1, false); + } + + public void testReadFromInvalidOffsets() { + // Read from first invalid offset and check failure without bound. + readTestData(TEST_DATA, TEST_DATA.length, C.LENGTH_UNBOUNDED, 1, 0, 1, true); + // And with bound. + readTestData(TEST_DATA, TEST_DATA.length, 1, 1, 0, 1, true); + } + + public void testReadWithInvalidLength() { + // Read more data than is available. + readTestData(TEST_DATA, 0, TEST_DATA.length + 1, 1, 0, 1, true); + // And with bound. + readTestData(TEST_DATA, 1, TEST_DATA.length, 1, 0, 1, true); + } + + /** + * Tests reading from a {@link ByteArrayDataSource} with various parameters. + * + * @param testData The data that the {@link ByteArrayDataSource} will wrap. + * @param dataOffset The offset from which to read data. + * @param dataLength The total length of data to read. + * @param outputBufferLength The length of the target buffer for each read. + * @param writeOffset The offset into {@code outputBufferLength} for each read. + * @param maxReadLength The maximum length of each read. + * @param expectFailOnOpen Whether it is expected that opening the source will fail. + */ + private void readTestData(byte[] testData, int dataOffset, int dataLength, int outputBufferLength, + int writeOffset, int maxReadLength, boolean expectFailOnOpen) { + int expectedFinalBytesRead = + dataLength == C.LENGTH_UNBOUNDED ? (testData.length - dataOffset) : dataLength; + ByteArrayDataSource dataSource = new ByteArrayDataSource(testData); + boolean opened = false; + try { + // Open the source. + long length = dataSource.open(new DataSpec(null, dataOffset, dataLength, null)); + opened = true; + assertFalse(expectFailOnOpen); + + // Verify the resolved length is as we expect. + assertEquals(expectedFinalBytesRead, length); + + byte[] outputBuffer = new byte[outputBufferLength]; + int accumulatedBytesRead = 0; + while (true) { + // Calculate a valid length for the next read, constraining by the specified output buffer + // length, write offset and maximum write length input parameters. + int requestedReadLength = Math.min(maxReadLength, outputBufferLength - writeOffset); + assertTrue(requestedReadLength > 0); + + int bytesRead = dataSource.read(outputBuffer, writeOffset, requestedReadLength); + if (bytesRead != -1) { + assertTrue(bytesRead > 0); + assertTrue(bytesRead <= requestedReadLength); + // Check the data read was correct. + for (int i = 0; i < bytesRead; i++) { + assertEquals(testData[dataOffset + accumulatedBytesRead + i], + outputBuffer[writeOffset + i]); + } + // Check that we haven't read more data than we were expecting. + accumulatedBytesRead += bytesRead; + assertTrue(accumulatedBytesRead <= expectedFinalBytesRead); + // If we haven't read all of the bytes the request should have been satisfied in full. + assertTrue(accumulatedBytesRead == expectedFinalBytesRead + || bytesRead == requestedReadLength); + } else { + // We're done. Check we read the expected number of bytes. + assertEquals(expectedFinalBytesRead, accumulatedBytesRead); + return; + } + } + } catch (IOException e) { + if (expectFailOnOpen && !opened) { + // Expected. + return; + } + // Unexpected failure. + fail(); + } + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/upstream/DataSourceStreamTest.java b/library/src/test/java/com/google/android/exoplayer/upstream/DataSourceStreamTest.java new file mode 100644 index 0000000000..7c40378116 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/upstream/DataSourceStreamTest.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.upstream; + +import com.google.android.exoplayer.testutil.Util; + +import junit.framework.TestCase; + +import java.io.IOException; +import java.util.Arrays; + +/** + * Unit tests for {@link DataSourceStream}. + */ +public class DataSourceStreamTest extends TestCase { + + private static final int DATA_LENGTH = 1024; + private static final int BUFFER_LENGTH = 128; + + public void testGetLoadedData() throws IOException, InterruptedException { + byte[] testData = Util.buildTestData(DATA_LENGTH); + DataSource dataSource = new ByteArrayDataSource(testData); + DataSpec dataSpec = new DataSpec(null, 0, DATA_LENGTH, null); + DataSourceStream dataSourceStream = new DataSourceStream(dataSource, dataSpec, + new BufferPool(BUFFER_LENGTH)); + + dataSourceStream.load(); + // Assert that the read and load positions are correct. + assertEquals(0, dataSourceStream.getReadPosition()); + assertEquals(testData.length, dataSourceStream.getLoadPosition()); + + int halfTestDataLength = testData.length / 2; + byte[] readData = new byte[testData.length]; + int bytesRead = dataSourceStream.read(readData, 0, halfTestDataLength); + // Assert that the read position is updated correctly. + assertEquals(halfTestDataLength, bytesRead); + assertEquals(halfTestDataLength, dataSourceStream.getReadPosition()); + + bytesRead += dataSourceStream.read(readData, bytesRead, testData.length - bytesRead); + // Assert that the read position was updated correctly. + assertEquals(testData.length, bytesRead); + assertEquals(testData.length, dataSourceStream.getReadPosition()); + // Assert that the data read using the two read calls either side of getLoadedData is correct. + assertTrue(Arrays.equals(testData, readData)); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/util/ParsableByteArrayTest.java b/library/src/test/java/com/google/android/exoplayer/util/ParsableByteArrayTest.java new file mode 100644 index 0000000000..950710cf1d --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/util/ParsableByteArrayTest.java @@ -0,0 +1,124 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.util; + +import junit.framework.TestCase; + +import java.util.Arrays; + +/** + * Tests for {@link ParsableByteArray}. + */ +public class ParsableByteArrayTest extends TestCase { + + private static final byte[] ARRAY_ELEMENTS = + new byte[] {0x0F, (byte) 0xFF, (byte) 0x42, (byte) 0x0F, 0x00, 0x00, 0x00, 0x00}; + + private ParsableByteArray parsableByteArray; + + @Override + public void setUp() { + parsableByteArray = new ParsableByteArray(ARRAY_ELEMENTS.length); + System.arraycopy(ARRAY_ELEMENTS, 0, parsableByteArray.data, 0, ARRAY_ELEMENTS.length); + } + + public void testReadInt() { + // When reading a signed integer + int value = parsableByteArray.readInt(); + + // Then the read value is equal to the array elements interpreted as an int. + assertEquals((0xFF & ARRAY_ELEMENTS[0]) << 24 | (0xFF & ARRAY_ELEMENTS[1]) << 16 + | (0xFF & ARRAY_ELEMENTS[2]) << 8 | (0xFF & ARRAY_ELEMENTS[3]), value); + } + + public void testSkipBack() { + // When reading an unsigned integer + long value = parsableByteArray.readUnsignedInt(); + + // Then skipping back and reading gives the same value. + parsableByteArray.skip(-4); + assertEquals(value, parsableByteArray.readUnsignedInt()); + } + + public void testReadingMovesPosition() { + // Given an array at the start + assertEquals(0, parsableByteArray.getPosition()); + + // When reading an integer, the position advances + parsableByteArray.readUnsignedInt(); + assertEquals(4, parsableByteArray.getPosition()); + } + + public void testOutOfBoundsThrows() { + // Given an array at the end + parsableByteArray.readUnsignedLongToLong(); + assertEquals(ARRAY_ELEMENTS.length, parsableByteArray.getPosition()); + + // Then reading more data throws. + try { + parsableByteArray.readUnsignedInt(); + fail(); + } catch (Exception e) { + // Expected. + } + } + + public void testModificationsAffectParsableArray() { + // When modifying the wrapped byte array + byte[] data = parsableByteArray.data; + long readValue = parsableByteArray.readUnsignedInt(); + data[0] = (byte) (ARRAY_ELEMENTS[0] + 1); + parsableByteArray.setPosition(0); + + // Then the parsed value changes. + assertFalse(parsableByteArray.readUnsignedInt() == readValue); + } + + public void testReadingUnsignedLongWithMsbSetThrows() { + // Given an array with the most-significant bit set on the top byte + byte[] data = parsableByteArray.data; + data[0] = (byte) 0x80; + + // Then reading an unsigned long throws. + try { + parsableByteArray.readUnsignedLongToLong(); + fail(); + } catch (Exception e) { + // Expected. + } + } + + public void testReadUnsignedFixedPoint1616() { + // When reading the integer part of a 16.16 fixed point value + int value = parsableByteArray.readUnsignedFixedPoint1616(); + + // Then the read value is equal to the array elements interpreted as a short. + assertEquals((0xFF & ARRAY_ELEMENTS[0]) << 8 | (ARRAY_ELEMENTS[1] & 0xFF), value); + assertEquals(4, parsableByteArray.getPosition()); + } + + public void testReadingBytesReturnsCopy() { + // When reading all the bytes back + int length = parsableByteArray.limit(); + assertEquals(ARRAY_ELEMENTS.length, length); + byte[] copy = new byte[length]; + parsableByteArray.readBytes(copy, 0, length); + + // Then the array elements are the same. + assertTrue(Arrays.equals(parsableByteArray.data, copy)); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/util/UriUtilTest.java b/library/src/test/java/com/google/android/exoplayer/util/UriUtilTest.java new file mode 100644 index 0000000000..f482d99c47 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/util/UriUtilTest.java @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.util; + +import junit.framework.TestCase; + +/** + * Unit tests for {@link UriUtil}. + */ +public class UriUtilTest extends TestCase { + + /** + * Tests normal usage of {@link UriUtil#resolve(String, String)}. + *

+ * The test cases are taken from RFC-3986 5.4.1. + */ + public void testResolveNormal() { + String base = "http://a/b/c/d;p?q"; + + assertEquals("g:h", UriUtil.resolve(base, "g:h")); + assertEquals("http://a/b/c/g", UriUtil.resolve(base, "g")); + assertEquals("http://a/b/c/g/", UriUtil.resolve(base, "g/")); + assertEquals("http://a/g", UriUtil.resolve(base, "/g")); + assertEquals("http://g", UriUtil.resolve(base, "//g")); + assertEquals("http://a/b/c/d;p?y", UriUtil.resolve(base, "?y")); + assertEquals("http://a/b/c/g?y", UriUtil.resolve(base, "g?y")); + assertEquals("http://a/b/c/d;p?q#s", UriUtil.resolve(base, "#s")); + assertEquals("http://a/b/c/g#s", UriUtil.resolve(base, "g#s")); + assertEquals("http://a/b/c/g?y#s", UriUtil.resolve(base, "g?y#s")); + assertEquals("http://a/b/c/;x", UriUtil.resolve(base, ";x")); + assertEquals("http://a/b/c/g;x", UriUtil.resolve(base, "g;x")); + assertEquals("http://a/b/c/g;x?y#s", UriUtil.resolve(base, "g;x?y#s")); + assertEquals("http://a/b/c/d;p?q", UriUtil.resolve(base, "")); + assertEquals("http://a/b/c/", UriUtil.resolve(base, ".")); + assertEquals("http://a/b/c/", UriUtil.resolve(base, "./")); + assertEquals("http://a/b/", UriUtil.resolve(base, "..")); + assertEquals("http://a/b/", UriUtil.resolve(base, "../")); + assertEquals("http://a/b/g", UriUtil.resolve(base, "../g")); + assertEquals("http://a/", UriUtil.resolve(base, "../..")); + assertEquals("http://a/", UriUtil.resolve(base, "../../")); + assertEquals("http://a/g", UriUtil.resolve(base, "../../g")); + } + + /** + * Tests abnormal usage of {@link UriUtil#resolve(String, String)}. + *

+ * The test cases are taken from RFC-3986 5.4.2. + */ + public void testResolveAbnormal() { + String base = "http://a/b/c/d;p?q"; + + assertEquals("http://a/g", UriUtil.resolve(base, "../../../g")); + assertEquals("http://a/g", UriUtil.resolve(base, "../../../../g")); + + assertEquals("http://a/g", UriUtil.resolve(base, "/./g")); + assertEquals("http://a/g", UriUtil.resolve(base, "/../g")); + assertEquals("http://a/b/c/g.", UriUtil.resolve(base, "g.")); + assertEquals("http://a/b/c/.g", UriUtil.resolve(base, ".g")); + assertEquals("http://a/b/c/g..", UriUtil.resolve(base, "g..")); + assertEquals("http://a/b/c/..g", UriUtil.resolve(base, "..g")); + + assertEquals("http://a/b/g", UriUtil.resolve(base, "./../g")); + assertEquals("http://a/b/c/g/", UriUtil.resolve(base, "./g/.")); + assertEquals("http://a/b/c/g/h", UriUtil.resolve(base, "g/./h")); + assertEquals("http://a/b/c/h", UriUtil.resolve(base, "g/../h")); + assertEquals("http://a/b/c/g;x=1/y", UriUtil.resolve(base, "g;x=1/./y")); + assertEquals("http://a/b/c/y", UriUtil.resolve(base, "g;x=1/../y")); + + assertEquals("http://a/b/c/g?y/./x", UriUtil.resolve(base, "g?y/./x")); + assertEquals("http://a/b/c/g?y/../x", UriUtil.resolve(base, "g?y/../x")); + assertEquals("http://a/b/c/g#s/./x", UriUtil.resolve(base, "g#s/./x")); + assertEquals("http://a/b/c/g#s/../x", UriUtil.resolve(base, "g#s/../x")); + + assertEquals("http:g", UriUtil.resolve(base, "http:g")); + } + + /** + * Tests additional abnormal usage of {@link UriUtil#resolve(String, String)}. + */ + public void testResolveAbnormalAdditional() { + assertEquals("c:e", UriUtil.resolve("http://a/b", "c:d/../e")); + assertEquals("a:c", UriUtil.resolve("a:b", "../c")); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/util/UtilTest.java b/library/src/test/java/com/google/android/exoplayer/util/UtilTest.java new file mode 100644 index 0000000000..351e93c339 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/util/UtilTest.java @@ -0,0 +1,147 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.util; + +import junit.framework.TestCase; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +/** + * Unit tests for {@link Util}. + */ +public class UtilTest extends TestCase { + + public void testArrayBinarySearchFloor() { + long[] values = new long[0]; + assertEquals(-1, Util.binarySearchFloor(values, 0, false, false)); + assertEquals(0, Util.binarySearchFloor(values, 0, false, true)); + + values = new long[] {1, 3, 5}; + assertEquals(-1, Util.binarySearchFloor(values, 0, false, false)); + assertEquals(-1, Util.binarySearchFloor(values, 0, true, false)); + assertEquals(0, Util.binarySearchFloor(values, 0, false, true)); + assertEquals(0, Util.binarySearchFloor(values, 0, true, true)); + + assertEquals(-1, Util.binarySearchFloor(values, 1, false, false)); + assertEquals(0, Util.binarySearchFloor(values, 1, true, false)); + assertEquals(0, Util.binarySearchFloor(values, 1, false, true)); + assertEquals(0, Util.binarySearchFloor(values, 1, true, true)); + + assertEquals(1, Util.binarySearchFloor(values, 4, false, false)); + assertEquals(1, Util.binarySearchFloor(values, 4, true, false)); + + assertEquals(1, Util.binarySearchFloor(values, 5, false, false)); + assertEquals(2, Util.binarySearchFloor(values, 5, true, false)); + + assertEquals(2, Util.binarySearchFloor(values, 6, false, false)); + assertEquals(2, Util.binarySearchFloor(values, 6, true, false)); + } + + public void testListBinarySearchFloor() { + List values = new ArrayList(); + assertEquals(-1, Util.binarySearchFloor(values, 0, false, false)); + assertEquals(0, Util.binarySearchFloor(values, 0, false, true)); + + values.add(1); + values.add(3); + values.add(5); + assertEquals(-1, Util.binarySearchFloor(values, 0, false, false)); + assertEquals(-1, Util.binarySearchFloor(values, 0, true, false)); + assertEquals(0, Util.binarySearchFloor(values, 0, false, true)); + assertEquals(0, Util.binarySearchFloor(values, 0, true, true)); + + assertEquals(-1, Util.binarySearchFloor(values, 1, false, false)); + assertEquals(0, Util.binarySearchFloor(values, 1, true, false)); + assertEquals(0, Util.binarySearchFloor(values, 1, false, true)); + assertEquals(0, Util.binarySearchFloor(values, 1, true, true)); + + assertEquals(1, Util.binarySearchFloor(values, 4, false, false)); + assertEquals(1, Util.binarySearchFloor(values, 4, true, false)); + + assertEquals(1, Util.binarySearchFloor(values, 5, false, false)); + assertEquals(2, Util.binarySearchFloor(values, 5, true, false)); + + assertEquals(2, Util.binarySearchFloor(values, 6, false, false)); + assertEquals(2, Util.binarySearchFloor(values, 6, true, false)); + } + + public void testArrayBinarySearchCeil() { + long[] values = new long[0]; + assertEquals(0, Util.binarySearchCeil(values, 0, false, false)); + assertEquals(-1, Util.binarySearchCeil(values, 0, false, true)); + + values = new long[] {1, 3, 5}; + assertEquals(0, Util.binarySearchCeil(values, 0, false, false)); + assertEquals(0, Util.binarySearchCeil(values, 0, true, false)); + + assertEquals(1, Util.binarySearchCeil(values, 1, false, false)); + assertEquals(0, Util.binarySearchCeil(values, 1, true, false)); + + assertEquals(1, Util.binarySearchCeil(values, 2, false, false)); + assertEquals(1, Util.binarySearchCeil(values, 2, true, false)); + + assertEquals(3, Util.binarySearchCeil(values, 5, false, false)); + assertEquals(2, Util.binarySearchCeil(values, 5, true, false)); + assertEquals(2, Util.binarySearchCeil(values, 5, false, true)); + assertEquals(2, Util.binarySearchCeil(values, 5, true, true)); + + assertEquals(3, Util.binarySearchCeil(values, 6, false, false)); + assertEquals(3, Util.binarySearchCeil(values, 6, true, false)); + assertEquals(2, Util.binarySearchCeil(values, 6, false, true)); + assertEquals(2, Util.binarySearchCeil(values, 6, true, true)); + } + + public void testListBinarySearchCeil() { + List values = new ArrayList(); + assertEquals(0, Util.binarySearchCeil(values, 0, false, false)); + assertEquals(-1, Util.binarySearchCeil(values, 0, false, true)); + + values.add(1); + values.add(3); + values.add(5); + assertEquals(0, Util.binarySearchCeil(values, 0, false, false)); + assertEquals(0, Util.binarySearchCeil(values, 0, true, false)); + + assertEquals(1, Util.binarySearchCeil(values, 1, false, false)); + assertEquals(0, Util.binarySearchCeil(values, 1, true, false)); + + assertEquals(1, Util.binarySearchCeil(values, 2, false, false)); + assertEquals(1, Util.binarySearchCeil(values, 2, true, false)); + + assertEquals(3, Util.binarySearchCeil(values, 5, false, false)); + assertEquals(2, Util.binarySearchCeil(values, 5, true, false)); + assertEquals(2, Util.binarySearchCeil(values, 5, false, true)); + assertEquals(2, Util.binarySearchCeil(values, 5, true, true)); + + assertEquals(3, Util.binarySearchCeil(values, 6, false, false)); + assertEquals(3, Util.binarySearchCeil(values, 6, true, false)); + assertEquals(2, Util.binarySearchCeil(values, 6, false, true)); + assertEquals(2, Util.binarySearchCeil(values, 6, true, true)); + } + + public void testParseXsDuration() { + assertEquals(150279L, Util.parseXsDuration("PT150.279S")); + assertEquals(1500L, Util.parseXsDuration("PT1.500S")); + } + + public void testParseXsDateTime() throws ParseException { + assertEquals(1403219262000L, Util.parseXsDateTime("2014-06-19T23:07:42")); + assertEquals(1407322800000L, Util.parseXsDateTime("2014-08-06T11:00:00Z")); + } + +} diff --git a/library/src/test/libs/.README.txt b/library/src/test/libs/.README.txt new file mode 100644 index 0000000000..3f37353a9d --- /dev/null +++ b/library/src/test/libs/.README.txt @@ -0,0 +1 @@ +This file is needed to make sure the libs directory is present. diff --git a/library/src/test/project.properties b/library/src/test/project.properties new file mode 100644 index 0000000000..6e18427a42 --- /dev/null +++ b/library/src/test/project.properties @@ -0,0 +1,14 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-21 diff --git a/library/src/test/res/.README.txt b/library/src/test/res/.README.txt new file mode 100644 index 0000000000..c27147ce56 --- /dev/null +++ b/library/src/test/res/.README.txt @@ -0,0 +1,2 @@ +This file is needed to make sure the res directory is present. +The file is ignored by the Android toolchain because its name starts with a dot. diff --git a/third_party/dexmaker/LICENSE b/third_party/dexmaker/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/third_party/dexmaker/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/third_party/dexmaker/dexmaker-1.2.jar b/third_party/dexmaker/dexmaker-1.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..08d1b85f1821faa794945f7d95ff4390a77dd14a GIT binary patch literal 675239 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�fC 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%0Ay-x65|$kg|+nmoR2Ps?M+1WwFUf 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 wvNyDU+TP= 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ɉFLFSN3&Jr0 zh;4`q=H-O<1Ba+NWkqcM>P{5@I^fmK`IiV&VOSv~cWFATw*u zLNJ`hbyVT}aOUm7^|DjleEE4IpS)!c>P3z63%9Ou<3exOZ8~h_z25<3@{zdRvWp?Z z73nztyC%}=SZ3M}*027B#Fuy@uu>m~Q*S4)J6~*&5XJd4pGxnh=$;9mPv(rLKn!_}rT^)uP%Wv_YhQI^IU2{X_RU%*rSAE>VM$o}xkcnDb~xP6L@<6kgtkhhS>@D~morMYa=yZF=4I*^lbun)J7p<2)H+L21o zB|qGvq-odbmmKPUUbW_AF&vDRW8K+3xox+O^!+D9NQ)8k2_{i8CT{C`;mF|PqH)_DF;TFCc{b!}q;RRT0RuDuV z{>9-b(|>XoRVaYmjtnwpdk+8RFT;}JAw)8AVio!5JcrcmEI(<$+Y#ErG~Mf z4f+)RQ2R~e)AL?Z$;T(+SD1(qui~=B<<)-KTK)deUA^^rBA4EF{N6dT=!i{w)(oV* zbsBXSHB`0Z8oURUyHzVP>;T@+`�TU@kuiFhd68a0h8BQ^&sGbl$JJo5HN0{Yngu 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

;t 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∼!h&dOz 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%0A!6>>ZP_ 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 aZ;?nwE8xg2e9A_Zjj}uq#t#30MEVckS-jZ* literal 0 HcmV?d00001 diff --git a/third_party/dexmaker/dexmaker-mockito-1.2.jar b/third_party/dexmaker/dexmaker-mockito-1.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..a3e19759c23b2b49f7c8702f800e57bd4bb6d741 GIT binary patch literal 12412 zcmbt)1zc9k_BJhzbc1wvcb9Yt(k~$$(kb0tFCEe)ARr;#DUEb@cc=*8%l{bXc;eo3 zzu~vt8=SSCHG8jFvu4esBnt@z5BAU;vI8al@8R1&aG<-qgqjG0jDjSS(zkA~VD_MH zw_}O?)}a3m09_cr?UcUc`iRRC@0InIEEz4Ks!7%Qmw)~$+og-Py1nr zX3VLiMx~E-WQb;X#2+?)$35TJKOuP^w<`_r%$^53pAwi?;G@oqMNVm&M|(pF%-^EH z*~i@l-y{r=V`Cju34h%4Xd~}g0v25xxod-K1K4--!2ZuXkVQWl6zIvw*80Z){@erM zTMtuPTT?5Of9Uuy(g#)FIvSg}S_3Ri?EgW6;BO?XZH+9=9c}+X5*;M@trvrdtD}jH zgSoAZ!w-SqJ_C2^i+oQAFt8WUU|<~o0ZROvwelcn`3JMfSs0D101gfrYKsc!A{ciC z3|7yvwCM~mlqPBCvEHkRcad_1gvx-U!%{9K?;h3DFCL{X(zHv(VxRQjqqpw_qO6GF zj?iCXi;e3Y47m)axAJVKeZBfRr~$@Nh77=wc(?Eourkan$(-9MP7_`g1^=QtS=ECB zLAJ9gC^e`NF%a?yoA5Nu#j{}xfhZ&d@D^3Fd`nJrh2nWuN$?pv^6s zr?kt)tRFSGmXhHXeCQDrS^M@dwM60QPh&VZ8Vb#A{vG ziv4;=^2%v#-=DY}d;uIl9|gsDyv_x*w+YbW^{walBJ|->ueA8W$ysQ!o`4OqXD5y1 zoSZ}k1;gxVl1Q*9-k-?-VjSqfgX36T=HyCuc%gbdbEzd?b;s*I;wj zC~qJu<}L;&YK&JpNEm&+1`lp{m9<>7nJ!10OD?=jeI@@)DvvfRR%R8JEfF0N14c2M z5J1{Ki;hT0l4Ou^qHUJq(wDbI5-T9j{Ykbkh*v5PnJm1Fb11`Z83a2%;xyAWL z27Lw%X)Fxf->=rpk^l(6oz0jX9;ThK#IsCGrEDg*-sNcSS&~l!3wjoR<@QdGmJqHQ%z!@a>n@<3;cjoV()J_ys|@&IU{u=nTYK0Fdo}htlEGKPUbr84!#WcuIBj5I2txi>*2yko{7l( zjIQ)ep0{lIdyw#ZYd~u^fB2GIT~o|SM4k!Cms0fe{3)`EDMtY;i8*;r0kSHlNYiom zZh%NG%dzko0c*iD?1;1bB1AKF+4_Rj6jGHFQOB;A@z7pwy~Z!39qD_CxCBP3;%9x) zI0jqjMeLR|1Z`#}XbfE$daR-%JXkv z24h&~Jx6FM@OvbRMQ6OeO8RLx{qVW@`HpADP)M}etTMYUeZ|Pux~g5aC@Dr!wMY~E zm3jv}*$Ecwme#F2@G#{lB9^(jE8*};chKz_tt9xA_K@2MM-YNVggfEqo7BVMoERMk zN{K4NPW-8mk9w*6YcesyQ|RdFOAWE3t|*)S>APP7(P-#`_2B*b-A%x)!i zES2=s#GV>obO}Ve%)TOq`zSL^Az$HhZ5(p1o49!-)-^j6;fMaZ?RxjjITi0ZqH7^w zu!i_)N)Q95N5Vib??AO>yV0Zb@O7pkM+-?@B*BhgmP^0CNX41W-_qjA8`1UC_?013ubRxKQ)!8!=b|;ITlyWw+wd< zRNH@MLC8R7XIUa)QdunCMnqz%%kfpuJeezRo8YCck%$PpyWj>geC*pUDZ2M}ZuneU zvwj{e{SFk`ye%=8L+q9TB!cAWh+lV*8{mV*#5?_#<7_)Kg zMacEk6uJ>(5#3YcbjUYSy}dZHS&@W@sh2S zJKqXv0X&pjogW*AS9kMO2^gacL(7Z8ZYqAwS~;E~p~}_14SL`DYJ;9m23v@?bktw( zl|t>)hV4i8guMq4H@DRHmkycwX`_uvuN^D0_jJ`-KisQxcNO+$RJ#oQzg5S?^$G=oB3q$()u5^^rBWY|# zf4UCJ3-uA%I~NN^m3;lkqA9QS*txwBEwNSj)S@v0Wilr^v)zj5$>lxm_FCyfG$Kt= z%htKC$VKl1I8)H`57kf;8o%z*IxCbLPH(W1zCmGJB_S1P3RpyS!i`?YUxv}^;5ay0 zX38a;dNoAVhcOC=`DLsFQU=r`i7PMBVYH8-av(mZwKzZD@uyaOr@XLTI{Fx79Yy`0r{L8F( z9o2V43wgx7IQ|1Id+6fD1r_1kQGg?Ls&yU_%Xb$Z;3I$l55WPBUW6+}tOFtaN~Wr| z4jcxk`a<~nLWKJDu8b454aCdgwfIkRsrh-prfj6mML>S%|G(v*7GDA~3g@$O`JHZ_a`x9=ZrbT4+)-6+GOWq>6vjVm(aJJUc z>)X#+?%B2nM3zTbmz%jgFO^B`l-3-^<7w{U1R1e}* zTgK!g#DeQ2dF)T;A+2wWF7`2Y1tO(n46z{vrT6`7=meeFMzO5U>ng(7EXh7ApM0@f zvV~?^Fn6UGHkvD6OhPYK=l-9spZi{AEgJgAIaiTzaw&&*jhWL+b zyvlvT-PaAv$Zh1v0rS3cIImr=uS(POi=6DkOPciC7Puo^QblePoVtD} zU3i^q^JpF63YjuyifNqMOxVu2%i}H#RXR`kcoyeAHqZ>WupAtvP{3K^FYvHF7hF%u zDWBzB4+rYeve+}_J1B^-5%g9j15H68!sq3il?`OM>9LOoVusH0y?RrJP2H}n71+8x z!6UIMC{^tXPR+vRjfSUey2iRTb1>j@u$BD_taWu!;ZWh3{%)I(Y2!GMw5c#i-tVKH zhxS74k(VH4sB)HwS0*-<@qv2^fN!bBZRQftg>8Apg*?yUle71~DA2rB&)+M=cxCVQ zb=#sOD^KRyN%-AJX2wSKqL=80!^yO@OG?t0P73DTYLHE+_CSOo=i(kSuzaZexo0vx z=)9&GtRrtRRq4Bhb3+wiDKQTtHkUrI<2mzUHB?b8MY)cdBfs?cJ+B{zC5 zx_3VE{o*cQTdt0FM0uY4lAO^!)!j0h&z8I%OY&I*P5%jnq!7u4uL6mv|EN4U_G8JoWR;Nd;zmD7 zYXFJ+fwQ7};xkM@$VWazYv22}d-vaR5(W$KGSRq@qvUMW=d*AA*MzN4nr)6%l{e;0xw zBY}`lf%lZ6243A1xWPVKH7oDJ1>4#&@)hzkrm0mZ>pIGb6iyP~#2Rz4a zOd}ow-uLI*`d~I|QqY~rv8SPaurC-5VXF;4sS#{rEOa!@coi6cKZmY6ZHSP7_PP=6 zNrFEzkP#6AezC)*V?FAxXEI8BegE3%7{95er#Vd5P{{$L41iE8mGb1 z*U;cOR&HT3&zPn|clx!YWiSKyPG?ZdY)3(+!mTC#rLS=k1}54k)6bdZDeu*hb^D!_ z2<|4yM;P>0ZUh#Ha3?!RV4gl)V>{h9JY-chra=L^Zb@RJSaM zuvPaAW*}*1SPu<5K85T&NLvBm@asNCoF2v+$8{^o=bV1g{ni^^izfB)p-aD=M&`8B zgf(!|HOIw?vd&zt#x}`ne&fAF^$SI=eb28nozjMl)hwdOv{53Rx>Ji`W>*FI$lmae z%6m)wO1l_FPLNZZ5H;SjTd=x7NJXJ3V?{-g+h=?fbH5@eq=ru^cguf4$G7104#Hb+ z`x#5R;$$w?^7Sn&T1-}>eBAk-F+=^nfS&z!iCw)747$X8wskO<#)z#(s$~0@HoMa8 zBAX))Uoi38Km%@ybAFPmL}PK4@dU^>X%>|DpCf;M&h+mkGBf?vE$ zVxmWK2azjmk5i4v$0M$DvQXCqF%7y48Dr#X z$tq8=R$OsrV0kEvZB&W^G02jFsR;*K{}?U0@uS*VLDeKrP|55+ZNJrR8~`s&M69eH z7HHcawWLH-lRj+9$z5l>8O8Zm$58qUoD z;!}%*w6G}oew3phjK6wQDz%p896;KtgmLUeY81wCkbl(4T+@0`q;zg$r+`$}NL=Vj z+bM3FfsHIplYG*bmh6bBnyI!unkk3CDa>BTCG1QNCFf}f#o418p4Oo0%OVMAH@$S6UYLxWb|PtLqOjKZ6m<~U8XBrzmXa(sAdYuV zDObj3T*!xCDc2;N2(YG1!lh+f!Np?2%SsdLH1Y5YQb*A+2Uf^sc7?ll0n71Z)|@w_ zFGD?YaW22CQ=sF^$Fj(Lp77D+EX{y2qhfOkB0`@w*RoZr5!vQGOtIg@C~I;L)BMD@ zrY~j?^pPCg7rqLR62+z|jO@N(OQP7F`Xbscm0LrQ1c=^+CKNjpsiC!OcZjgLj;`~p zFOhhCq~6gHU-sf|*o`>jdBF~2H{9Iu>Z_tX@V5epxl*nKEo>)H;TZXFiHNgXcMyMc zK{pU&GW`!O$okt#m8hz%_)yLa0y648qrpbVab=hbuQc==a zTrmF{ad9|i(Yo6^KQyUJ+}lTJ!1YDArk2|dC7;8VPRn@)o9U~scX#M*Sez5dJq-9X z3$=E=J-Qq8W!m+<%+uSi6hf~XX(Q^-pgJuML#`Y49j2TiU#=i9+3SbxDAf%h7Kf>^ zmavv>GC9*7u#nd|g|}^4sDx@X+o(bzEnUb|D@_nxU%Ni}@JTHt0@D#CktnKUvo$Z3S%aj zIT_COm<-{w(;J|M;;a&W!VTD5GiB!d3K{xUytpNc+~X@<9C3dFj-Llnr^zFdLOV&V z4$Lak5f$7ItTJ@uROYQ=Q^_+NqK!ndmi4IfD)pgqa#6}}x6(dA{?Xg~3Qi*pLEcvQ zKX@D4cW={u@HT-7pp7<`_G3DTHEc7Xfc!OVU<{65Kcza6mUM_>r?VDTEt_%Uo0|%D zR1V6|khjV`eA)ry1CS_u9^1nW+nEj5!^c8GufVBSP0(PrE~{chAyAO`pOOT7!b4*q z@pD%8#T?n&>V=`yT0PR?^#i=OZ);pQtGCi>F>~#J14XZ~2pTf$vp!jWj<-cb_1jwOWAGNm&78lT!yyVgyt>54yxJn@{4-0Px) z0sFI4P}!zumZ{~jPk<_h!_K&vQqY0KJL2d&nqg$WX^VGfyb^hw(S$EC>ecumWfA*J z<`ejLZZOoeN}KV9TLkmo_9hl4-jtNA^Q}deRx2PcxXL_IN#x33FRrCaYsN~hth6Ex zO$b#^rtDEN>_dFPdD7JdpNZ%CVvR?SnO?7W4zZhV1-Cp4ftwEPL&7=&(dcHG&K>Py z!JN2*`()3ExixM`LADwUlAV+lN0Bm5W9xb$EPUpBD<7FSy2ia2@;6&S^Ovt?F0*1g zSOxl^1V*JPbMe7Pv)o?`Ttu$oA$g>hsn1F6W-($Yw!v3Zg zDi)UTbvvG)=`*f|VmM@-Bkt;0u)`X~tX#zQiH?Fz;rQFgpVNrql4!5}a^i#kp+27x zfdV>-OzO&M>}&lMN0>aAu;ELpe=dCb!hq~ft1aDau`h`Xm&tvBAR3W|QR z@3h{^5uK~oQ8XOEK+z^xR21YU7TV+8Y)P|fs!t&ioPOj`env&Rz!fz)CARBYvOe(f z?Wk!@qdt{&Zgna>#-F^kpikfhO;Y z3T?)!e?4h@2hmkzrK)R?AKYa+z_wtPdBe1ALX^ihd!`0*c7a}7SRle-8M{gbH>%cM zX=CQLcaKqFC3yWav0(93n|SVk0wmnqs|v)uN%8ZhAtq5`q^M{2l;)fn7s$+Y^N+sZ z=`qDc1oxn5!nc!v4Qd9uu~pLGaZnj@9f9-M?#0G54vkstHB#Zj;`U(tXH$s^KcY*W+X#}P{x%V#-b0Fdd zTomMb%Am7hmjAG!{3S*F=6ugAHSjbr7Bxmi$dy@GC_i2#;I#8Pz8ec_2%P(WJ^~LWW|o^3#`XXzW6<_bgWy8F|eZLdTtw2mYXrKiPkTk5I4a| zP~6BKC6)6*QvdWxv`Tg(qbvAZ61z*BqrON|v9OVps`~PD4O}%9{Gn>u3f}l*RmV5r z&n4fd)f!GD!_CL;LnK8P6H>^sVCC_3)-)(|uMnuHH5;VgGO0i`Q_0>A4g*q{rc79Y zYS7Os>7q!skh0vY2}}Sy+}4*0@r|^pqr-+HA&Re6ilXPFG52 zv+PoKdN(XsNj%i+f=KasIlVL$6oNA>AC4t!#5`?8Rw{eyV;l?7EbBS|-}7cicW{TQ z0(I`Ueke(S7M;Q4)O%LXY-yOg?wJLe?aR|oLy>fWM>T*x``I!Z`B;;8S)X=P4VYD0 zNAZqW4%I3c>3ts|8EW&ml$L0xp7zb^Hb!smFvql1b3?%lzs%m5liLq${@}P^ z8RMIHpOWBX-XQD#mb6*S4?j>S$(xnV?kmA|@lM=5nP*?Mf`H&%J^IN-Lwg;!6p@5k zg*}$0JJ*d++7G~a&&WEzz#a}?uNc->U+!2g=}+yZ zMvt|80bAwwKU8*4>PU*No@6)lGpK;@fYbYg;N?-zn_r_?+0xBn5|3M6b+sM*<@&V! z=oTF2>`Q&izKI1v9ZxqLy;0yg?a~T^R8~?Ry*u?Io+<4v(k4i8x0zn*U^5PdQYhB? zXjAENci_k8GfnvQu3;MD`eecSZ>4+Gn>rnsX8D?oYgkgUPTe7@klj%$k6pcz+qUH# zF+>*Hb$ggaBAM)>S^dMij?b(wVXImEWl%i2XV8*K2Q3}l-5D-iid9zVh<`~JDVGu*#Ao-{>;=t0U7awsbdXrHnI7UHvG9W z*`GUuNG*)Nky;r4g4FUWFNpoWQ}A6A!?&0J!z5TR4G@LM;bYV+9H=(Q4mt?n`yVyh zf$Vm*w#rb~wVhzb@H(!j7w7k>;kL#_i=Z#E5)+Sb*5Wl#j89uASVH5Q8J>ebU2gca zr&Zf7u3wVw;pKUB`f{yRe-n2hhf}m)%(U$@a(09|sj>Txj-1eY+w^OZ5$~<{0zPEw zW$&c1vGfR<0|4I40lN?Ya`ZRi5b+Qc;w6(T9VySIapsBM@M5w&^@mGf6+x=iQa(w( zn;RhVw1#Snxm=Z)TB)Jf-sCgXEJd?#fhnd>fC&}FNe)K@*I>cI3JB2Ll%TB7YfkE5 z+_Tm~lf+132uyvhu$cZC!9CUX8oc82V{72MZr^Q&B-tLzw{p9agQ=4189`E1>pNW( z?Nf0GDX&?wPo-$s<$1LsnWPnlOvzc-WtH$;OJXgasoN)MX`Z>FM5NABOiR;;GCvD{ zZtl{w*EQBRkF%o>qTR1N62NDCT_wazd|)Dxb_ ztPA_{Vi)krik+bu_KP#p*Kyd}Qh#*NeX21Q08Je}PQd%-nx|Ew;qY#DBfM_pv%2K| zuzw{Cj1{l^QiF{)(QX0X{%;8$HrZs`i>EFw1(bl}!x~G3R zJ3y|W6x=(a?)N-xC%fRJnXn8lMSrwd7T+-xQfR7#zJolQx>~K6T@1KFyUkVPRYAA( z&cV7ny%*S4{=u5t%eK_HF1vZF-3Q65!lRzfa;Ps}n}6LIm3a%3+~4!6IYTsealh-D zC^4?|MpDyB9|4JI`6OWtO~*l3*(qB7`56Hhd*$omRp(ZyUG@0U@Tb|csRoc0$8Gm^ zS8rp9YMpxLwuR>DtFb;^#!M`UiQd1-6z%17zEyRa-|cz2j-G%rqkZ*R#;`7C?hYnB zk#rteJ2ug=U@LkN&k?(c%gCcQ6=C{}pY^2q^*-NoFNB?a;px|Uw@JIrLeNejyDzM_ zNt<|Pvaj*~xV_Z`-s9VXW|lMP68-;}VRrVmb|&_Y<|YoR&Wayo8J^P1$SX^isGZ2u z%YIl_ai$wkvy+j3#>}kF%v#CHT+7O-YKMdjZjUHmKcEsG#&&*gg>)HFKOTN2i@>jH z6@Tt-%KgIr8LtQ;|C%%Q6T%DhrGEFKf4r~n zqx}=aZ#$G<0e(HO{s{m;{AYlFbA0_P>aQnvKT(H4i~T+ewidUU_m{D0!yg1-1a z;rz0_`_3l)bs)c1bbkVPWBogTZ}r_@0e&sw{RB9~`F8-{N_xKn{91DP36PEd?*P6P zV15PobyNKlfSBlC0sQqR{(ZLkkRpF?dA^mTe>sc)F=77I_}^<6{;nEy&-0}KC7OQ` zBmPSJ-)6=?(f*vrJ|w-rwZ~xh_az{-AEEqv3j949{aN@S3H~WO{bym2>;FYc{PzkU zlH#8VamfE<&0i_}9+Q5TB7aBt>m>O*MxL+5|A_D{W&ZhMe+#3(<_bT7hCqwtFE94L d8p;FE&&)wd78>S3CpPG35R~z!Q9u0l{{UOOy1f7Z literal 0 HcmV?d00001 diff --git a/third_party/mockito/LICENSE b/third_party/mockito/LICENSE new file mode 100644 index 0000000000..2a5730a7ce --- /dev/null +++ b/third_party/mockito/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2008-2010 Mockito contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/third_party/mockito/mockito-all-1.9.5.jar b/third_party/mockito/mockito-all-1.9.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..00416eb38777c2efafc03e20141e31f7e9e614a9 GIT binary patch literal 1581066 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

2dQ?~vphv}^L_I92 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

(OWLd;J#h2zU)YzLTPkZ{ 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

0&N5 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

D^Tq_CrDWPV#bw&5vNr`Zb0yOn<*4yPOfO*Fd^ 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�hrfEajUbL%15T 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¬O+N6~~!=Ppk#jJpEm8F{QP;h>QxhkJWgyTEe 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

{A@zW}B{Ii!1C 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 z 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

;|e~ zU;`+}$Og}OCun;2OSAgfW&uMSthH<~q3R7!hw8Wx?nto*(5X)#NsZEa0}l9kJMq7B zoK30DC-0IB_Av9*pUsgoqZO!>>kkYWeO!(I!jgwP}!G{m4`|;j_w-vc; zwpX!cEmdjZDpqnWmmqa!xV=-MQLd=mjB3i(;9_w)eGcQg{-|>-+1gDXW9qxAjL{)n zJ6Zg(+?KSTR=BbkLl`5TyZI@8TOIDHCZ>-QNs=H|{^Z7o$bAaD=Vn&m_Y(4Wbi@V#NqK-nBYHC7`C*(V5hf4}p<&F6J1d_-8~cO=CglG501_lXjXGe3aauSEog z8SmWrjhMi42};Ey<@!6mQ{{l%2_=cxQ!9#m<{*Rv-0QpEfn zJ@$Wl)_>AuvQody`ajK??7&GJVOxC4hahs*^Fjk4K@~VGXW@+lTh6Yd;PS)0uFEcA z)Mm<$aF*PEdKtza_iTQKY3UZG$~`1(-0Ux4Cm8q@K?kA+Dt|W0PAqaDer=Qm%Kg3~ zQQ(pW2s-->JE3C?=yI0hhu^|A&2ymhDE%hfcq>~+tTDk+*emwZZJtKx|xsfSRafa5g}(EhnlHe0sO8O9?= zioL-?eWCAbq3mTh?4O0Q@=1JIQ9F`JL*qk<8>1&H!`2W_bJNmHvip-jD6DjvQ?z?b zI#Vw$z;kbaJ;QgA;CP-R&e!D)J>OHxyK>W*e-Vd$2d7++a6p!5R!GoXaHn<%+OV3n zxCEnUDt7Rxi2*jrDUmBKFk#;~>+#Ar@8jY1z;WTAiuO`65=ck2Ku zcaFD$t9o}X5Sj#$Nf?c}#qx&LmC|Wzv7dWUSw9aXAfZz{4tc>VJMeo-vQRkuYI1CL z{K=Rt*^=8cv&L+Ld7EW1;v5-A&fDfZw9$q#W}qkj zOBIM4_jv(pZm0wjst@xRm*M(u)0MP!%-N^UsuA7AU~Qy(&;I;x?yv&e;A6)xHHj$`7d~?fk&qv^6mdDzC=m+3?p~vfHx;GJicztQ;;18qA?BCvZ)7^}BPrSY# z!a|tGrokNwztmhAkTYkim0Yc;@?)JeODu{+6-^pCbsI+%Z}7RH3*EIAEX3u_=760g zE@a9^)Sh1%NW#;#BE0j3LIoDT|t0W$<0j}(xpA>^{pmnaV!M;@94&I)V`kdBw7 zZ))F5G8XY1*$~iUP$*Uut)kGG=97vzV3F zgSQnMuM>scV~9*BP;(ofFNrKk4Jecmc6p?T-`_ycz^M}NsA-Nl`ZI>OoQ`Z!!{l2Z5T7nZ4X_#M^ig?dmb?`U$|0mEn+@%S zz9B9HBQttnuK?isq|1FF+o~h4cV7-Do|c7zpw2M%3jUJO3IKKjjeOE&5=6{h@C%!T zP>2Nu3DGEzl&IUDylDD+M@rZv`+DSbxlzzQ%)EWfZ+w;b3>G!_Tzm?hl1wgCq9?`q zho-?-JrZ_u^ris*{AGD(AxW?>MyHgc?EQfw{@@HrH_lKQrH9A~W4_koN9V<*r=%l8mr72~hl}^#$wU366#ephPJJK1w zDa0=Onf>=>@>GXNPw!B+o&u@<+H(Mo;)}4j&k$U856wX1Uf}5)$q;%8!bkF!ynZ=`^_R4HV2bsidwFme|_r(liJ2w zbNv|dwGpWb|IKFX{Q~eR2~lguCCD1N?_x1TC;2$oEFEuEW|ICFVmC6{9i#?ikTp7W zfHUw1l8@tRk_+KCQA+~}b&X;$nu0q}=a0QxFfrOpP|<35Ldu(AXKPVTaH|oET{FwI zhNc>gp~g;k_~Ih!%L$FL%;m^5YBw(1CgNl=eJ}g3`)&4Bkt?etM&}U5=8>`zW>0r^ z9L2Sf3nEuPAzHwPDCP`@PO*k;yzEWa!$fz7eWDGt)lbV4CK0%88#9U$A(zBBkG+Gg zS@aPbj2X{0=^{KgVR~Vy16jtTS1+u-ap>5!e}`u0#1pg;tgse6edvo>;iDg^R$rq; zpVVO=`5nZj^PH{M1^Kv%HjFp`^?|vLmoLh`6 zi%bryu`ERS%OKwB7`N+YKWJg?5}jNC1!?rcWLCwo1YW99>(Vl&nbvs-DU6Zk|RFg%iRld{f|xYU)fi0P$=a`GBigtUJ7=u z+lBKB$VBvx`rO)+!D>5qA8vPPXN7d0<%4hoy|D_z=Y#d!g7uP6E&7ltl;yw>;V1wl z#8+@hrK6&}#e>Zt8pemxN+jLG>BAoh5C(^^x~{AcIJ};Z zVIbH$mrYI#-KRLcWBs`H18My802GC;5MPzxz#vvnu~wmeERt)jEL;y+)}>8(*>7H7 z)?pqRyU^5`yjJo3nv8paF#14q>3WSA?-EhjIPx)#eynw1*sfPaFX$`)Xmg!OZZFRJ zs43_MNv}18!Es>;Csm5%Er3ZCn%!1QECy}Hfp;AubmWt97#^_|6J$mK2tq^9&%F}ceZ`F&wDm3SWae4*^?qk z{4OMbV1b|qDA!Pu_;sAGk2V~RiuhMQO1tfLk2Y1x&UF{)ksbAIwb5j9$Yf;Xwq8pC z-Gq45XNf^RtB^t)BCu?jNkC!XjlU;~VvX51vpfW+eIb2n$-@_u(R`WYKr&gP|8FF-wim(PC(cL(?n+>;hoe zx2V_n@H!N%Ym%2=t_F8a8qwh@-S7?^(m1Lxwqk2-Nf*|2<(v;6!b_FNzF;r2g@Lgxu@ZFMNB(4FCN6MAjRyC8*9w*Jp^bHbD$HFwmW%;6 z50ER-g_|Z@F`igcTpXV1ox9^3d#3bg+tTZ6uoc+E%p0pWy8cd1H0ho`-TiTCT(V`T z{n=El3@AAg#)qPC>aC=CY;ee3qVlW}t9}EiXj;gIqBtdNkTfUMu@0`(5OAWLlB8 zTiU0f;rjz-(dE`!2}WvxvEr|uYKUSejm4Oj0;+Thlq0XD+wM2~?agx$EYg6B(h9qj z#xG(EwMfi)F@?IEhUn^bZvZMqDVBX?kQ`y@#Qpe{dA(jWyDqf)hjp*L&NOYt9$H^_ ziX8HjK8=usJqjA!k4#nx4u=Eelgy%?QFjYK9)tzvj0u#&lb>B4J{@AN&66*INVe@@ zJzSYsyVEGYirBWYSEthBX||>0-ywA?H9SZ~zqi26cwG~8M9&ZPqJT$t^=Azu7FvVJ z?|*COL3EFz*}_9nT;tB~_+{7ko@T=W>D9VN`QYd066X{B5CP6FIFJ)|521P_6SCuPV9j6<0q%P%ncMx9o&rY zmVrg7-mOQ8W|FTG2R6;90h&NN))h*YfSZ;{A^2ug5s~I(qay%II}w%QhyQ}Ji_Y>O zt9gtaSWCi&4&u}kx6ce$D)T5}PSx*_+oIR@fhU`_jQn4LW7{&EMa0>}735X5wYf45 z(5y&4dApMt=`hhS(eJM!^~9uZ_tm6Utq?X(r1yt>3(fn?jy>BYHlzn-UEa@#QvC^Z zGNi&RrSmaSNVcvG4@XOE?4Y0zCouSdnju|fWm(#XPfqTplJ7n{wrJ+C31;`4LV{ zt9?))9FL=ot#rrBc30oGw@2(g#3pdr=J3J%7#{MpT^fGrn@DLbqSb#n2Q;uZayfNY(TF3+%Sr)?Gd_dROWcNiK}zO zOyo%cE0$Wzp{s8K#L4H0Hm(A4+nGhe=*mVMn0UaxL3+H;CtB>_KoHkOBL)dSZ|5s> zQKs0&fd!q{`cTAqnsS-EdZ-USuuK+XaxW3Sc6hnpXnTo#+NirrbVFvuVrApp>FP6W zzC&)zzHnUR;5ou;*M_`1W=77L6g8WZDi0LIN_qGiag7r&37nkv5wAICW3Ou8_M z33!^#IAyD=xAeU*W0Gd}o^DPPZ4>issXoN{mjgv|S1QOEOS&htW)^#9nlu^alqU%o@QGC*iv#hYmy zzKX=fL|1HX@v6rW0U}8zLzm$9$5Zci_WsU9AZ6N_g{@H!aa)d5k3fTPnlizmY!&Mw zSfE|0WiohzhJC=Kzh`9kGwEO&ivs13eju3@&e)E7e z0#7kWOm(~+%LrtDrMS}uiXu630YdZjD?xXZp(0|)k6nztQ3;0O(?m8&sY;bY8#2-(CL z7GeK`)r#$ZM0DawZ!$XQC}}Lm#%q641e}p3Lz^-H+XwW@9oFY^A(7R;b$p5ITd-=* z5EgF>({B%WVd#KPv_rqSgfW?8e1j-lr^lO#I@_@{)&h+p-{hjV3`Hf(!MAb>HKLR{ z6e-!rn6Qi|Jn#q=u@{xgCogt>vOuSEWC^AsZsrZ`KA%K};L5p+yxSH3T`Z$ZWX?Mc z+5R{VX54Pa{=j9j5b{H4AmyVAZkb17(v$IBYLUHoO|SIbA0ql0*4cq9hU%fhW7-v> zywUFoj@8>{Ee1|f$!J&bAoj?oZelDO?+tBAUYd5F6pT;13(=YGa|BIiEta<)>p{+@ z9rRZtj7<#P)zMHXci%ejh|J{FVVlM(3VO~K#JPx-fs>*B9FO+Xx$NmH3OPK9D8{A8 zXouBtZszRhh9-g|X zK9lY^VmkWqel$u8&|1gehDbhhDSD~N8*a4%`IeJS20!8%f4aW@Nx*yG@(q4ehRCIu z!Vm1RZ6LHe4c5k?$Sg(3`r7o%t12yV%1@x&!!B>>@h#1ld$|4avp>9 zvF+)Bs}Lgc->%uB5aBx#>>BBZC$S7HGTCAwg_G(<+E^2p)SrNrq_c+Ey@OG~X)zRg z?yaI>eihm1VW&Pj8eCNxR+AnitOrg1RC2p)DbQwd7!KEhcM850rj1+oz^CH$AGD%MVl$~K9ssya$5#2STEJ814NRn1y@A+B6nWAiiLd=8mUMOr>s z!XT=TO60@H9)L(aJ!bkrCn1{Q7E{j`?y46(gPd08z`WfrXAvsPq1n)Qi@e=7@^}K(EiLG@rT*I#y zw)mCt{to;8zrCCRbk(>9Y1&iAO6?U1}2t-PaE*i+BEF<&_xX_U6^3iO+67FqN}269X@tmbQ*h$R;3umC%G_)zeq5tDA4001~fu z>znSYmXcSW@`E(<(+PczfbE@C%kit+K`5!wpHC%e3?5`V#gMQEDh9WRjKZfrH}?0N zAy)xX;IEjhh!ZFVi!KtJTqp#B+0P%H1qZi5<&wLx;k5zc543o~4y&NOb6;TcH$w(p zJGd)2Yrb1Ib8n2X<*7f_Kb1i?qegpElpIV+Bn*o%E+){g4>se&glp%oiFawhBowdM z09_|Nwqr0KA1f+pTm*?f_ulAh2M134vi0Zm{lnJpzaiR*o7suI5xQ>Owk6C;Z`D$_ zQB_;0-K2hJ1HAhR=p%Awi5tggh~rfg<=DqiJc-!I(uH;-HK5~~U=>`xF_~0d-i5+0 zP?I}L<^qJAp`hVf`^DhH{9*7P?N^_Au;w=Qvv9FtNdGYSN&n5@GuXFZb1j!Z_uJkO z1!Ne(YjxqokOot0pYSHbFfM@v8sk^J$3R5mS)-LzAoehbZL*((Xgn^uY+1xNi^Eq; z38Y;shb4_P_vU!=B*)7Jz^zSygG@(sHnV@DUTdjoEqwE{;sB|Ajwie2Tur75n|Zw0 z^Oa&gV{V^W_F`TDG*ROW`?uQw5WEN+Q33rk(aY^H3iSiP zH)(&I1iFa8rU;e2^XGwg?)k6j7G7WPPe1_Jd@;SjCJl#mt8?=fa#oEFl~n6U3{YI@ zN@~jsZ|$ur+#Rt&8q5|8=0)$$qH+(#{0^Pc=x#K)Z-t%rh{?_tO$V(H+Rgf-cmjG4 zxy!zdQ3z?BSe@r^;80bTAtt>9aO0AigK(k!Kw)uscx#+%fd12`$fd0!cs^$4EfJ~U zVlNg~QY$~A7p){2H7pMsltxGy&N_icK9F_>(VMD4YTXrz(mfm_PqDjXW{GXeLbp!v zJYkGOHM(F6$PxlrBvdt@ttz|L1o$cPP-68}Ei*bKpmkmzTbiOBxDcdt*6FD)fvc8^ zFd{6q?ZsKiTicWpB*;b#!@?s?N^2ZtJJph|3-N|86O^S3hbya;r7sO3B;M>*r6zj?8lQRi;kRj*b6rJw|NsVsMoq}{6o{gy3 zq<$HP$c_*s+8J#&U7x6_troPg?<&@((P^;aCx1$f1-ru`H;%iYHu67ETbLu6-p4eU zM=LQ4dM}u-C{JRFFHXVOcoIvi>Z1T{aNDa6NZm^bKs(3&ZB&d;BB(2>?N`GlC1M*@=J{n@ar*fC%@^Qt?$8Bs7e$IHx!oFI_{Zy_9H(=hZZ1gd)ik^<3u_(&cD zdOtgzdvCQo(Y)6Td60Wn{N`&~2%{74a8EwTnPomYvMOSE!t)*IzM$zkhw} zxl_~a%ebPf^8%k2H{15=TX{iR*)^`cI+r)w9`>`vIip-X)($ORnC%(&s|`}tS2g&n z?BtL0Fl#v?{phQ_?1KXU2>pME(m$mpIqAPT>lY-_oVAGHinWDT28l?N>Tl)w)vw1y zqIQ<&Q!Xh57TeyYqevapgu8%Vk1wB`x$mZ4EPjk>6%Li|^(}VxJ|E~QmOLIJI=7KjM6UhTW?|aGe(VkrLk-Sf-_M&{DFb7+ z0GCrKfrtlUs@ePd)uN}Mv;|37OZ2Bt!CBa>@%9>8Qp9zHGN~b+lyKmf;rpOdH{s!JNdUpno_YlSQtYP8$jUutr$KWzE z70-uEzc?d7DjZ$+CMt#`G6ESa_%&Q(K0HsTdv|2BGXI++DdBU7<|o_K_K`#0jo<6r zo>SSvoQN^)MgAP));Rzn<5x%#UPc7wHG7l?)C>RoZWgi^7E}#fx5J zK!uFb3KkfXR#em$PgW*a!aT+TML-Wn!_X3zdBpqHJ37Ii5Cd8ozJX$#GAJjECMh_p zcVGw|IH&$bm>yd+lHqUu;S@p$mblpinA|9u<}W-<+L$lO+`4s@xtjKp_-sFB{qHS3j#t!|GxR8U!*Q+{%!AO*+^$f=kU zx{Eh;6OsJdU;Uuh`9s?IWUGnnMEEba@3%KEk1#tRr9r>pn(g?lrC|ijEh*v)@6E9b z5J#3&xX6adrJ>i4mV5?p90;nbi`G!^23|yZB=n0{_R81lCV*qWP(x*FHR*RBa}U08 z3;4#8W|{wpM6-x-XHAU(cU5iN-eO>{Ut8kJdG~6cnsejEdB=vIFm?-%C>>$Z85F(x zI;$uZuK4{jFOsE95-rcF14gFjjy^=1dd>pk-ZStoqy3+L;pNxTR)wQ;HCsi5X( z(3-$e|jkRZ?t2pJ5n+GvvHe%?50UBy4;mcAs%uNMH zXexw_pt+sW)%R`0474ZJOD#c{#zZrQY&7mMjAYQeFU~1zP^3#nzF5Gd@nK(74P8{i zbcbPU&_1`$p)^CLD(wB1Vfw~rksd;62>h^l2;=X>qV<^Txl50b6A}9m{4JaKyRO|f zoI&@8IGrDR?`&Ixi+Z%eh5Gij7hz;S7_;1v4ePDboPT~=V2MY`&5^?kw((sIg~tge zi{nN}!G^IF+shl6FYe}SA~Rqq{=V&vqEvV~)%#Fici^^hPb!8*3z1BI(5lbSRHs!Y z%lI7#;fakqe2s5n-t<~`Wy=gu#rZv*t%P2-TNx30u!1GH)m+gAM_~mg>Dj+8kgCx| z`(6bpxWO;8LDZH$i(8F1LO3MN{LVu;rYwNd!J~0Zp1!QETb*;OwgBnZs9M4VFvJ49 z&}IeCo{1*eb5mr)SFxa;i`412cyf>K7)jQ?LtkpwEt5wIS9Y(qE2TIarQ<2Hag~qB z526jL!3AZdnJh|W**SN4DgXp@f3!NpxPSUn^sKC&tj-%zru`t<-4VoZ4=9ok1>fn+M!zrDo8)SvB`5^F*xEv>roq z8}cRxkwT2+YYCo8!ogPwrFSo>nQ8;r0V|mA7};}skDa&eW`SB*4%xeRJk#@oC3{~R zeB_#CXPf9-p!gF!&`B22x#GP?hK{+V3%zISh%3&uAzA zTZp6MuF$isS0V)Wu+t%VLb7(zhzUnq64=6AfAc-!)Wsgi+0LUD5&Q{WZdlwKqPuqd z=&R29jBbN>fM-6hd0s+Fd}L078QAZaA+n7PI7B?v;Yi z;XnI9CVVhlX8TBr4G^{m@XS|b=e~)YaEYFzlY~nYi@|q;^OuOzCr1)Rg*{+vymD^8VIfu9)U^? z06_VEZNJ{GVAtK-4dAaep)fwRNf&-b4rin$)$Z_n{z1{_L?;l6J-g)1 zB)1udVC`Lk#ASqKa>-ij?G^}W>KOs48%>k>vA-LFe<9w!R374&b}N+Vw#VyapmNq^2t9MkP%NM2 zd=VVzA)m-lau(?PR=x!4lQB<3!-k^HWz>wwK*j)VjR<+WkcTnqD|LRV60uDm2v=7i zHl`r58}$Vv_Ng5t!dv)feXH?K&oHZ<9H$khngoGX&6b0Z7fZ<8ojVekrgqc6o4q@1 zMJ?rjR8g{={cZ`h?RydbIA;#)AR8ID05=MGw*bh&4vGUJPIIiMSqFCg=7A24DB|e@ zS4CU9J!?A6?T3Z^wM&2tb!rhJo18pn;4T-N_Ztsab-3^M)yZgETGTm@n_Y&UY;KZO zkNZei9enkcmdSIh;IcxSJ%e7y-(>=)npNxLxP~W(SXJ1y!kAtjR}Z{ywyaZ~>cK~r zmWR6h)ew-M_b;NH0&Tvh@J;w74oCN7N=vfL*}E^^pUUmIZ?OLgsg6ZpWPpB!ZTpwl zllMRB1B{G>jIE4K^_`6W+DOs=vlGZxT30~i|JoJ}B(PUN4-w`zTsH2YPT)r9)(?lL z+^-OBb|Sc86++jME`4Dm$2-jG+fM;J0m{=C+iQ<{n@c^Hl9ojpL{vMZ(N@AC>P8F*ABjj2^@m^&ez`2-A6wfgL z;EIx1ROCcN)I?g4H)a%WKs@B^BB42&-CxmO$WCLB-i*Q{4!K4X+XUaXGdUk&IBKoJ>?Vl7xlN zCqu2v78YpR`%If48_-%RPCfR@#x;%fO^xY#uFALw`Gk1h)@3qn7FYGR{g zp+sBkS z>|vkCD;scj^!rTF?~H=KpTVog`&G(N`ICn2l80PJF;(qhOdR;eh*#;u&>lZZQtcuS z(}19Rnt?{dDx5pyr2?ZLKSBO$j2RXc&>4P}#Z-jL?_P+`E}K9gGzSL72~T552alW> zPhdq2U(>dk7KJ>x%!l4RxRCFjga|^L(omG8t<5f@P1x|oSG%+9@JdP+yzMucm<|2) z+JidwB-Upt5-Wm4FXu`}vSpMc?66NEA0D2d9>ncJgG79#q=nuCOY%tzv=J^Xq3%Ni zx(gkxXvPqhK|n%fav-3hajv-6P|*_VxSJLu?dE6S0zH`WGtdPKDcBS42-su{O(Ck( z=Mn|S9cOL9&r%H0Js66`+kE}?nX#WBIbJB9PQW+0@bbqy7v~WK?!JyB-wpX6=#g;Q zOEHor#P>w%QyZU-2O&O5l0C7&Qm*<*GhkiQaYr(-%ai7t?3wNqehYZbdS})zNv7s8wa4sho=)8BI7X&>#zdIy| zki}$sRP|GH$ZC#>!Yo8K1eF?MLygv|N!*N9{)~^I;K34nT28nF;`Uc+UHR;<*`WBY zyqMu88qRc1V<){-pzt5okkxV^%gg#Q$L0jRV8<%J-W6py3k4nqOjHG_bm!0@sR6xi zGCz<=X^~OWEXd+1@Es-=4TmI2v*#B2fiQiwpc%iz*w(!?1$eL07D5WuQL3_YtSLY- z5OXQm!Ep-+)9P1>5FosE6RSzaNm}v*@#MeM1+?zL&q0V1RfU^LmF7psoM}WY!?>wt zFU;3SYlFt)AdcLyw?SE}4B|Mg}XSYvC6e5!raq6%v zs{R2(fi^&n9;kQ1f(rk`p7Vy~wW!o{WHr@dRmn~R$r8v^P0|_1VPIuGCjxHU-!%eG zH2l5s4Yomg-_d@V8j;xDS$+wv^k4)*xu8Z|WF%#mNoi1D8n1go;LQ)C)KU3FDxx)- z8PUia#?L5WVLS?c8Rm?>NB&%`2kYe*qE5%d@wX*NaOU*P@+_v3s2z)nrC$@7~0R6s}WD5F32ln^tPk+ z#*F8S_~#@j(j1fU1&<`)xnCu?+*VrAD1dw7TX|B`h86t>X)eVJDhVkt@W8l3jsnLF z_VHIN;Go@-h#ei8l-seY*Z6a>v~~h=H{#LGlB;=|y?I)WFXp8sTI2_WY*zu9{7{ z4sW{A=W1p1N{DMCWUuM1VnzHi#C3D48D#aqCGHJry~bPm{(y$pQV=^8!pyK3pU9h( zc*xRfoyD<1Fct#t#-N~w0OlCj^DnYnyC%QDN4=?A z=Z-DAqe*nnpq{OI!out!hT;C zeKq~8GQctX(lS4xPs#{svLWu>yx5kVe%j~rft?4tsRaV7U<%vpw9i$JIy;KILzgoM zzjlz3Fxb!7gzt29z0};$b;OBXt*&LKJGJM%Qs;v513q_@KHAjA9jo;g|Ega2Hvhct zTU^ybBanW&vj^`cP3d6fxNo>g(7Fv}k*GNI+=Zdp4u(33%D7hg)3rA-drh5!G_|^y z-{*|!%^tnSLp>GGmI3earZX2^WU7dXy|WQUu7mF6p5wub0g7(U$jT)RpVcH(4>#ZV z6+BHgOm3mHkW)|NfMWb`We$X^Gs?o=TLy5&V+++~SS>FCE^l_j-l>Q!&ZTJDJs;pk z?ZKTLFz?{ZxbC3RXFw@KmY%wh$V9t|s~WmJ9G0|-2t`%YeFA2X6!b|nkQA%qPstvD zU3h~RnYy=9^=Giil13}?4`a3YQaw3QjG4hI``y%M<(fPnp5RdxvO8i$D}t>$E#weN z>IoExPmJDi@D)v_z8i)uqy`0i()c${s|kCXNqd#{PrAU~t^n3jlzQ9ZU0;n~l-IO8 z#tPXfU>|>(5dIAInvpo8lwZ?98T@}b*#FPn%b&r%S=HM1OKSUZscX+1A|S(EeB3iV zO*d-K*<7x@DicXS2BlG8Owv#mpR`#u>AM|YKqS%9XwdiEk21X9&E@(O$H9BnhaTnj zh^N*ie|>s5sjF9?Pd6nN=Ihv_;z>Z(wd;-nKkOEPd5_a(f-g-R4S-q(plsVf>HRDe zJcNBc;R~LFa=cb-W1Hv9b&b_>0H{!dmx|;}2X2`nm$xmDL9Rz0mINuoA?q zZvWi_$SznCRqwno^tJqLhI~Rk*7T7?5s)tSVrbOmE<14(CL>D}12gli#592^SEV8} zcq1jN^hNjNW4)p!BCE+Hau|2CR2HW#{;aEJ9HF)C+v^otX2m+Kb--HHa7#pH{PKlgN_yowvo68DrJFN+^^4Si{=y83~B054ta78o_iLlghWdPEKJQml&~Q z3iW4(oPHw{V7k`fVAZTtmSAl-U+_0;5!E*M9}kMjY4tS(C0*7-((_DXih+>!jbx#{ z3+u!{x>MIKx9a{D<+}Jeb(}vG$ha_=d~aAGvPvOwkiR#u(4%40BM6wQn>1DkTt6TA zcDxd!7qBjdlPXkLV-;+<&KY;77oF>BmK+;%lajj_F`hGsz%R! z)Bq@p-tkOKfsZ}b%uvt=D_q-?SM@CYaAq`uuogBa8>eu3TliRaiy?u9PI8mgLK7=10NlZ=_o7IDg4CXm)&SkPxioj6x z-t2w7D>91D;L?W8{VTLOO_U8}>Qkf3Tw@}vn+>%X?*bwo)jU;ETgW0;vt>&P>Rp^o zWuTgYPyV8AZ3d@lST%7VVr5*N?~gTgmc+9TS7|8RV$&)=E>lW9xLjgpvPd(;*6MC^ zB`2v53XxS>TGp2{5YFXIJ3GO~ES;R3dBjmvFC-;D;%H=s!+%vQb^QV{hEAG@mJnU( zJ8`+TQ#KU_J$vx#0!k3#;P!W|-5bjKk&?I@dc!{fB;30Y@m?jn1t^XocCOyK$Cd8} zSapd8h*OIOl!I|kH%h~MnP$}D5U5lFB9s$s)@H!gBl=NoQZ8PQEu<7uDp3PaSKYg4 zos6;;l_AJ0DU>PC?Q4S_6bTus7%*OX^84m(-wg?>R`#VxbU?gmQBe$)S$c9PQn zh+!Jhvw+J};t=+y@kz|~g7IYBfr~vGuN9gF;-|t3AwAty$QXG zX27(Vftr^QFr8BNs_tiNsqorpH+X)>1yDFkJd|*jt$D@inGCC#>$ADs_dND71T9n@ zrCLoN&Z2kT?LG~owLD#^p{i%HN*aoXqrPQ%$G-XKOj+k%`fHUKER%E4v@U1i_V%Hf z=Tf)qSJBRu#es2}#>}uV%}lGrt28+^+G-F{Qj7uND=PYTcI%3M+FphnouBGy;W9_K z|2jfP7%ElKeG%ug|A7+qpXjoYk+_Yy)BglfDQepy@FQ`5ZyFPz7PeNNU5=o(s@Gh6 zg^wDE%disgCg0_kUNcUgukU0ua>akOeS?&4V*aOmxsx)(0-uHJJe$+?SC;2xcjLCN z*E>jF1aye>p)<7V&rkxnkWFWybucc;*WVM4(7TUV`@*G$67WpEqV1|xB>iY9GXmC! z_JuVZUX#fDeceQRP>`nR%iHSTBX>W5#uL*_#+uw!$Fx&HK`RF9R2eW0ht9)lngV)8 zEp0zK3|?yH-e&ikZ`lsY87$DX_#*T<*x-EV&)2|aeUn$hcFOZs8ADo&!_j^eHg8Pe zMN2`@Pcc-*NH8HV2C_qgAD|)Vr$fb(#H&>)q}M+!7VfztFcyIfp!$=0i-${^v4yK$?dj>dR#ddQY+s50GTsx8J1AxKM)`EwjV zQ5t5tL!h5(k6g&v(g#+yp}05)t0~QtOrWQUCodDSuE@0{FX_PM|h)a(jKCD@t50VNX7_#}Z3q7Hf?#HR}Ceq`hNwCft@a8r!yQ+p5^MZQHhOI~6+>+jfN&I~C)mPM^N#ygk0Y z{ob#~$dfVhCqMSH=URKMHP@Uw%Z!)D&&bsu6S_|Wx&n|UhLs{_O2+u|BkYuC!t4BE zcyi*WTM+yqE}F>BwS5F~#M(55eR6-jh(8+Dgr2_orTAYAj{iyX;lH_v|Lo(a{8YmF zGK{Dth{}@rn#`GFMM+`_Od29(k*yX>ic3XiQW5qQvqEdzPc=xTl_c>!%!uc`Y?d`G z2$4+}U;WYlOao=53fiBzJlu5Zx!Smk^8569#Ovje4#iH@QK(YADY;a)tT#LcU8-ko z)NMJhtW>iK?NFvFk=Yt^t=UZNeE}hZt^4os6`+Yv_xT9brWrV|4FN z$OgiUgrT2C@`k^6VZX00!ghf?!kkuZYm^(azj80M4A_Vm{nAN$f&j!Ecv26*7Z%3o zg&0u&DFA8od|=fj;P;3dbBNE3Z~C@8;On?26-Y;$3nUN#MrO) zhHJo`w4bQlxYfIV53U-G)9mT$VGDW;fLpKhO- zFvKp^K*&B1iAed|+eoNsd{07sh|cW*Tj z9iMrw0Yz(S&kxdjsy4!V5r-rL&pav{jIKh=E$b3pRFA1STBZIY7Q9zq?AV&Dl*3Tl zL3PnaN~jz0@7;OQK$gvX6P$c>26%bQUS@W=e{QJp&!9tk^I}&D)i#hfsJ?gEB-% zVbVsf98O5LOl+c!eDHZxI^>AIRFB$WAb&=I(V%(cFpZQem9mC#(RG7Uh=&AkzIO(XXR6*EyAh}UOUkuK>CNFBYNv?XIqZl?zACOK+#QdA@Lek{C%6{!Z<-fuGq6&*mJYA0;bqU#ZI z4BvVd^KrL+#E%ekn-!)RI?)ta#Z$&&K69_@evwg zHSCn3@b|WfDvz9dz!FK>X3{8WA^G?5%b((EOURx*<13s*e6@%FC%*B27f${ZRv{`s zoz}ln0pCX?tz7)RbnQZ!X*y@xY{eB;TVH98blCue7h?y;82Om|uguTx&JVy+5_DdX z(U*q}JN}yFT@~1bS1%Q#>ZRtQfNoHgZeZ7tF(nZ07dpamfLoqb8$S$UgXr|B;qse;`iUIGp{+6qcUm!=z!e3n zTRq4^A`u_vZN_<6qegHZS;KTW1?>d^Ict_}2q0F%naVioq;qEK1UauqElAh$m<2Z^yPwrJ zWXXn++2FhpyY}zD<@ULR*56&u+Bge^gUyp6yPiGQx?cU_6mcHS+pcaJT+e4;hLkNQ z2>WGH-XKe1rU#@t58S*=Pk5wK4^7^Pt|6R3wF`CUN1AhvYu3Ns@xAxnv(eAI^%`7reNFAbX-lEOZXtN`2Cb||BW(P3E?uIxrr_z)@FXzRTJoUKN6ql<~ z-lJ{T8W)%Xa+>Br$1CSiaz;dMl%&I!GV=nF|=}{lag)E9{D`toBe{2fySTfgp=vHlw$R2_J_4Uy7XjT02^^9%!T44Em ztSe(H<1Fp z`0Ui%Kr5{!ebUM=ByHQ>1_cy3X5|C+Gt6__cD&c1aO~mX;@NZBW192*<$d1_Anp4& zgV7pijXq}Q=9dOi+7aed^Y6mD!3Jn7`s7#d4H`G>y^Wu-dV=zk#PryVfYMpwT zj<9TsRL4q-f%pjC7wQF)?86k3vFOJa6yc#Gg_>lGCVj^&@pL45Rw#i}<|P4TR7e=_ z<#@MHf4fwYot!ECa55Kplq4y|C_v6JNS8ltdQHZQ;$zDgI&UEijlNXYm}ih4NpQg2 z1z7S5A$&2*3^mEp4G#l37f&~UuqV%OpzsSCy`iqEA7L_e;Ptl>&&Csmab+Fm5su28 zvQ47`bz;nhPv*k$h;6n?cuI>j+3cMHK#Nai)XCTum2{sQpDzzpN-a2IcgZ@-=xQf~ z>tm$PwDJmpq16{f64&x-F{r)niU1@UlgkSL3m(Gxl1wlS$>obD4Roek*wA9}bUix- zZyJQ3>tm>!zvB_UB6r3oTKA{N$p6U~s*DtKZZz47aN-lf_ZxSZ$bl=2NGU8FdLZE* z8sF=Ee*+udGekC}Uydl!K^lPta4rkXy*27S#V~mssb&{s?I+m@K?$TLApeCBf)9om z|Fc*`GT>&x5msmyP-!J74-r2iI|-EhKGB4O4{~1_+a_Juh&Of%Ccc@CTWCdiBb|qiJn&qlm z<%aVVk%i{<;EgeBE^aFvwkdvB(J?_1iWPj{8Sj2gdD(?U$9md>Am^xwm0E$9k&|EP z*NZ_oA}%1Fq)>+la{M!o0zdYu{UeW}&iZe#Ur-4@1q>^KXTOl|Fy{ZD{ta&QtK1n7 zTOnW`4k~Jpkha=5)E}Pl7hG|my4|fb6e@A@e9ajrH(DNNts9Q#2}mC(>%o1?DUe{B zDl5O$(d}cAf<|gjIqK_raZz>O`rL{=Q;z6DYjMX#hcc!nG?*XieEgvaC=t0vy?WxR zbaFmy_#(klw&_~Qmuj>#glihX9mzZwaastscnzw=b|=8N48<`xVz2@}AE*KbY{mhV zws)=`-40b-8-!_;Jyzcv5ZT?DMjONtvnO|$zALO=|JoWtJW~BmW7 ziC1jgpHgM-98(ALZeN1YLF|0g*pHsh=KDKkt584eneO5q^jtSWww|J>MsBQzLb;d0 z+TZj1-|fF#Af-B#!kGmXKqYRs%pK1vMWZT{oXe4*k-=ofT7?&CK2N^*4`Q|eR3ij$CzR{1^8J%d)DAhD~c4npl zwP=zFP&=sA#kkqyQ(tdiA4q8$ok?NSoIKJR9wqb<#3tMX9c5fAvceKcT;2|6i=5Tx z8d#M(-11=iS_{JZep9G=sek-8AGJT^UlR1I$+xdpXWG}R^Y4;=l$;HmEsXw4Pvt)n zQH-jV+8^&jIFQ8XB6Sf2dJMW05^Y8L?p1Y4vBf4qnh1-z76&FyNN_S{hhM?#We;|X zWgj6O>%Em$YmXnn9~fz`#y}KIr1VFVlWVUVUVcCMxStUNe_$0BCWF+?kbssl*w9)VpcJI4|d@#OjK zaplVJ%sT)YVNLH74Gj9)XiV&}4rn@CO>wmz&NC;m7u%mR3}cEtT-?s1x?ZR%siT%$ z7l%@c+W(j{x9{v{cw{r6K7`$i3WvHT_oOq>6dc5q9SlZq#KpW@KM{-P@&DC{7r<6E z`>WjgQp9u(kd-@AY(FDhkdUEwug-ELC+3RF2$%&F}{ znZe7ws2$-ZDsx|9=Jq5XTqR1X_5;R`=z0t=q9K1s7;V$pAj(q`w$o9h-4iA{bMBcp ziO8@HF1m#__6>v-$i0k5f2n%lSwN9iF0#m6dT{lqrL}i z;(2c0a>|womFlBSb)f2EwuxwFk_Od*yaY1Y$N*Of1)N}{DsgQl&1*YxXHQrRQ4gDy z9{`hyE#mF}Ual0}eQ52dB8R@9IP`tjyu7HdcTwhyjI~g^TQTeaXW@HfD0Oth5VU1M zpi}>^$1F=@w;pqkvXjiW*zX*}5uFI{;!Nun0t-s;yx$N?ROUDQoY$pZ>&9%3$1-qX zK0*o(@-QrSzt*c}7$1<3t>_t>TVmkNG{s@&nSS=C*m%Fi*|~LxgdDD^75rpm-0(UC zP1SsQVTZZGt?lZi^5Fuh{0{&78+RjF4I@83j|ieUzfaT^#Rh0cvz5Dus@A!Mk@u2)>&>PZ^cg4risi)3Ds{6JNN2 zCU}He=(xABs-!8^*Xp=s4WV4(ERXC$39s0XV1~EFhbymtTg&*9h8rLlMVm8!5Ij2R|P3nDjzBfFgq5ch-FDWHLUq1lDW@ z)dNz+1sCufND}WHp-cdb3s|<6sLmHdG((+*mI)(9JNz_QRf$KTqbw*^@x_8*!co3! zge!P+VW~XR92KkoUW;+Uwj5`>Kjxe&?MJc{R?S^B=Vkw-R)Uk#wH`zxp-QDjqB?<9 z4XnXY+^w(SdZ8>|iV=8)W1KDhyt7ydWmbzTqIgjTc#y?1i%*U~?&HoXyJtK~fWLQ` z^}L0|7mXfuV~r_?oKCOLl(#iF;m%jIWQ8$vxf|#1$_zp>6AsRw7E4W#5&1q?%}6iE zlN7(9nn=&6(k@xSqNLm)KyeP2QxKUi(yEgCdMcqm%%EwbVjeocUlSD}#(V2Az;V#D zy6#*Qh-y)=Bnd(uL%vs|Z?e*j*If;LUA8IF_ttMv%Luzi8`?Y-i&&;UZ#U$qxA)sA zi&nuBH*(?=f`h7{eEYcJlAAz;Ues6diOy8UW$HuSOV5wfHDaau?#SFO@3 z2N4_9s^CX3Tq=GTV0weO4o~#thr(WalE_$#m62+kLTJ}E8TlU4Sd1EpR!kWf+$VDe z4wHTI>YSQBec1YCb#Y!-(PmNP(kaHWc2329_}QbPUbjFyiWhP!yw7(-N_>97{IoJl zI3^?&3{0x9IsY_pqF6GMqeGT}0_<0ce z)W@q*_@oVoM3`J-pKlXDCtt>Vnr{AGNLNQUQ^3F<@WagpJMfEgQ(os}qiX^eWl^SP zDqEoopyz17gtD7)&dY&L&?c zao|r#ktZ1vC=*xLps6-qrFo;P|1wKC#B|^P=k$-Qsjo8B)#CpZ zP_UW(+LU5M0K2yPn)xlgz@HHxUzYSa#R(P2SIgh*QEq*WQnr#w(7ajUef;^7({<3A zU7bcpf`7sYx9H_z1Gu#jz(l9eu&-s^hMFi=ao(k(UoNd?S9q7Ki9>d~H<{L;^$&k- zNF~;BE_B6PbLmA+j&KlYU-k-GK=4v}|NiK8+J$&0@yU2=ndwpq!TE5I!>^jxx#;kk z%7L!lw-jrW9Zvf6f>}7yKZrXa-*?7Gv`u=)%?#UO868g8%J68-z@Vfh5`wl#CbvW; z8Wb3Xi>*B0Ya2(tKYeMcoe}!>v}NCF{{;K5GULzwX6eyd^2gV)b$!J+=D!o){(5x( zs4f)yZ2yRdzy7CqxRvZ;y~-klS}03oB_0~aHOu$TEuH8Zs?TkWXsynZ0vv&fuE$?f zS+I5F_OQ?;@S&$QL0QjlxW-z+;!%P86_wibF#VD)4Jfh6#(_t@yr>kkslA{qJ0J1G z<1jt>^^^Wt`fzG^47gGY?5(={`CR5hfW?lp8pf~<@(MxzuRzVfiSp&D>?Fnkvq>9p zK4K}oRy;9SRBm7D;gFefOPmP7-0crD%bf3gFt0uEgF77ZrEpoq%b|}qh8e{Zt>-U; zp7F4M3JYgr_k%Y8p~f1a1M3zVvU*JSV+&D#A@bbw@aetB#GR2 zoG)nr$OVcJj-385ikO8AbdTu9xU(=AyrL;G$p-g~eox>i7e{on8?N02sKNtCzM-)# zn0V%WzP6QNxn8!hqliNU-AH$X0>y7qsz!pSs63g~+zP~tmSJMIBKdPo#_zhc*fibJ z!nEzXj;kw9&tkj5U+Upp+0L_-dl}hKksSp*_G01_F&n+yojKCZX-*9|g~CdZ+pm$| zDfzLRiRs^+_S`tS6ycM7y>X+#xfY&WXES`%=_yPLe#Y~ygN~7X>b*rf6Miy1{}(-zhqQDSqpz#P|D`}H z`2YJl{aZtbU^O~=E{pCwei(-<$xZ$eW$pY zB?c{KR;Azv?8VYe_i^f^S<{ike(13tJ05FPmPMBi>I>Gd}=s-6t9F zf>B$s+^H48Yt?Q{)|Lp><_r;3bu?<8FN;w=`Ue=)Q=o~mxA>3^*z5uro$2mWE?=}& zHo*@~b}gVOLwDbsbP=G^+<6d1nXMGPq(CoUO)hKH%?*zEN2kjfd+pz|aGPhx<70z+ z8g-SS_b7$ynDy2jyu`v3RfdnEf}Ggq&CSfU4t-T`D#I~4umvzRVT2frrNAL*L7)u_ zshZIU``}MVF-=A&Hes*zC31tiG)e zD#1%9WGvqlJZp!iNoE{OlCo&J_2`dN}3ODQ&vRRPEdXs^3CMYpQ6Y&hDTAaEd{PYQM zjA==bkHHx0b=cmW`oe99D9)!lslQ9YppJRpP zAM*DKiVFI9W?Gqe`T|>6Fz^_ z({AI^o??8@$Zgwu1j|g-)+B5JIa_n!jLmB>PbXq*jtsA;kCmpM!Qd?G!DKM9`{0@Q z^IjBd&q>38*@TPEw<(fsbVu6+cW~$yrx%^~c*HVK@Ruw;xj1WssLU&IYz|xA)_cEV zE3|VACz3U`zIq!CFPJ|NsDgaoBDswxIT8h-V`j`hqAuTJ2zkmJeFDBUSqVABZUeov zXycS=g;ou$`h@-Lh|Ee~uWB?(n`X%Ypg%cSq8mr~5WiGUmv~q|_GS}o1d*Hh{8vKw zQ%Ua_XU}SXA(;1njbNt#sHIDk*Ay28z7XsmKnT$QlSR=VZU8W_7yAmp#YHoI+Yh{i zoLNAcBu$DLZ+DGN(>m`~1(F6nVa7jx>k0;9KtU^`(!sq|Hq(7X_x!Oxp#~tFZieB~ zU7g`n!;0Bfn$m1C48wEzL|vQ4Y(i(3g{-(b!JOMkmlnd_>P6P|^c`$i{xP`DY2lab za`rS2qG~>2|Eyp7vLmknQXHwbpQ|v~vSs3iYp9kL78M3pY=e_7rhePYOsr+Oak#0d zy&Ll(O;i~S?XaQe%*9%7lB}yU<5FinainEvrHkzdZZ0yPurMTraEK5@sQU{ z+SA3#6hcD^Y2fuDiV=xW$CAw5;UBM9_+(2<&xUg(?Q)2A?212b9Qe&jJ;YZ3pjU4F zNlEGe_=F3qgW_{j5$C2)a9rrcuYW}gMvpMQg>&q#h-;4nTNKq3!_t>~USD3m{2IeE z`o52EjdcA-32{J=<$YmZ!A<^n`&8GgeQv?o%-XyF6ZP1AWMbc}F^+79H}2JWkmiCr_>?{Xu*Ew_!9z!N&;*BSg&Fe5?qE2ACXEW zTX-s=>N?KAO-^xK1gh@$pl%Sj3Xm3z?h^V_jDa@EVUVT%uEt+&*s^9AL9!K|Kad_V zErV2Mw$zb2LHlRjg3sp#z5K%@?J||i=e=9fH%E+OMGTa~Aav^YH~`5q72 zEq7rxf;m`GdnR1VA%=vH-~sZ;+|mO7BRYV|JBU*>&t|B`Mq3#lc%!ZImyPyM<`fFW z^K`{3>;n>LwO0Eqc}C|QxXVPwLva{XmY)1)(vBM_A9tCh7qB>UwUENBZIX32ZJZLV z$SSe5_h7Hz6*kg%iyDn`X34Vtt8q%pF(8KH?3e4Fn2Xs9N$fOc#te%&; zvg2HR5K2Of1PwLvk2jbhLkGw!eplgUUV4{#Tv>U0@wr9rg+RkZYDt=NZ0WIZZz(mC zCa&>-Yu$9&7_$(gv$JFlWmrMO^_oyep1#$~u@@?W!Vo?K`?;4nRukP4zm3pQmY+%J zx>jw=T?nJG&c?%=bx@k|>!mbMGqk5_6Gq|{#)$n_MSgApA2APp?=0#^D%XD30cU86 zgovs#$n2YjxGl3Xaj%Hh`RH3KP!OV*@_q%U-?fu$2qp8O2}Jg~Vye8EY!q#!?O zP)CSCKG4RfNkSw-F3TPx7zP&|SYuZfI#mDBaPgueR3Xg!XI*-rdxg)6)Wrs7?Pj;| zED#2WNhO!f6~lcfy@_h#P5lf5Rs9U6@;7(T5zUfXdI(f{lXvi&$Y|?GozRDg-9$4xSv4YA$bRIbhmk1!jBVaJgy%CdVfeB)323J47#On@!ZQ>d31JT{Rg?eS^J z1`*FfbTTrki6E)xfkjc618QP5z*wHj%`M}I zAm(KS#q8~wA8buY56n5k5R{~}bE|+{g*U*?qVRK_-wLU`3sgu6Djd)s&E@9wj-(#U zyW@HqGOl`r3GlYQjUeI;#ojbQm4#0xx_apK)B@|b;(o&Vo(x7c5(qR_HaUEN*}s( zFQ*PT4=_^9Sy1J~r`X4H!Mcb@h2{-&r*QxNU&N}cQ=Co7zo2*UzlI*mU!eyE6lK6E z3Wq8hoi2rr0{;)}0jLJ_Jn4U7uiDyGsS`QY?K55_@Hl8F=uq%Pui<=cP>6t%a<%en z3E}eOB{j zW{R$mA6&blp{xv{%k17M*lcc&!`crq3?-qOp@RmkrDqWhV{e(HQ->_A7c}f@EQ^fy zs?bh4&t@2$Y_hPhFt9!G0f540_bR6FcU|{1=MxY+Pfs}7XYsQj}U^dJlKXF1Crxv&&yKFviP9Z2pFh=9z%NnO6S<$%HQhM`G`4F*UPT`!VzUQ~+u`}^dTlbG4{3`9h#>62B zWF|KtQ;pP0PPLi57LptR)rQ$edBMnhs9?EA#^fZ#1f$B2!9_a>-;pGyGx9Ik*Jpyp z1}z{QpZ)w?HxF0(M9r!0oSsGI6^Xt@U8Ik&G9a<{`FWj!r2(w4Bu_D3qS%-hp?din zyRAYShWR)*UUbGo#zzl@%eD$mdEVz4l&c zIqrh1&n+kML4%a`$wDk~SJRY_-qUeW26VtM9&1gFB?REQ1{ZOISVi(((iGQd;0K15vU^LC9zD#Xk_J(d}Nm< zU(yry`yKA75%@yqG~3N@YM2U<)+u3Rs5aOq4`Z~__|jD;c}@MrfWC>p&~%c z@d{&S8PQk2_eS>c|1|-YM2u-iK?49pV*Sl2&|jJv|5kne6N74y>e@@FAN0}~Ogu

tYv%=*`WU`9O?V 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

Kp+<5Bz~bgUdq&1^@6-CwRmd$)I1hk861h0 ztK2e1Ml3T)qUNk07?HEAz{G;rc4(#Lb4w7KJRcaQuxO_si^547+bn zohp;*iS7I_E(@<|Ebr74rt^tsPC%!VX=-J1;O4E7ZWc37$syV<+-ON_Cgwz=bHaUd z;;9B7;%u*0jIuzs+=K1;^O!1jqIH3hsW6v2 z-`t4hCoU+*oZejsw{e)wRY@@=%)!f9|1se}2SbqU?r1sghhT>CqH>LyeUC3=2k8-RdFkg>wI( z_W0tpWH(-oNb87OMYG^%2kAEeF#VZ#wri z)BTtEod4}}C1YT3^`92kgDPJZ*8(V?vUJolnwG8Gfly2KoBqC%UzT7A1$`g|@Le<} zetyo$*3F@Oy=vRVLOrV#sMXMitzZB0A3Fz6u^F}j|`y%B-+Z@S&};X88j1N1k=WLlp!XbJ!eA8|tuKYBpTEZ28nwt{DnD zoxqdRx2ajlUYb64ZU=%JtOh8;&@FdY1d;_c9DtWfAepN$U$SRbN+AE>uXK~U365#y z-fY99o7K;qF3(E4(hcrzC=+bw7(Bk&}1jZ}{zPJK-5* zz6;zOvq}xIZr5sK3Z}GayL)2JAEiw-v-dk4)u)j(EOvAeLI?_pV!Roa)|6>oNse2r zq-PSDZ`Q5QGne8UTvt3TI^8&No8kYFI~jih?ih`J(SnUvExhbAnt%`bm~UvTw6F0nJG*F#$M>@ ze#e1s22HBk$gP!r7k$0(%|hvJYP?ys)&W$txN_({4gt))<8**zW9Q-K{t5vZlYNE# zg=B%LYF-ek`QZmZx=qq^rxPm+IY3DJ@}mxKzRNkgTs)*fTjHJQ@)LxZXNB)wW0rXE z^P^-CCfYj+)rmP)EQx)J%1^9{6u?GjQFxQWL3t*=5X*@ek{i(4p31Ok~;-+p*(O9 zzaU+%i->AQsm*AFadY9zHWghjnjM=CbuQb_)Y#;Egrl0-R|o^oCVEt+7LCdu2Gt_| zssS@&NO;iYqYE?rn6L*0MthhoHbX>!j)RmtBg$O)SmGKpfU2S?e|B2Gw}&q-RB429 zlnLgMHZgZn4uz=()u4PU)}T@|MdJ=yqo!P+M5sp9XkWRKLC|2r<;=?NB)J3yKyGD@ zK8t9*%*_6Xl{Ut+`dqA>ZVc`!btK#<3|M$9((m)fG=-fXpA}@wVy|RmtQ9N?T_iN7 zjMenB*Cxn=qA3t|*1CUzTS3c+c5;@u84t!*%RSDdCFaSJ1hOV5&KQi+3FX4w!l6teL|xddD4SPrKwG zx(a=#yYPt2POo}dHzw+%ZIBOUVX~H@Jx#y(s2OS)Ld^^4AK33NFE-ua_igy=A^kx9 zzvGf6{)+>XF>o|8|IgPnQ%%bg#SHb2kH;u!dQfm+WMFWTl%H{ZP2G$+AO|5Q@CUFB zFwG2F$fg8iO*^tFsXRidW`piorEY+VRpAa8s-%Rtg0)R$vdgyD-DXJFYyIc+gfSAU zl*I3vZO?n1sn_g3trM$0@7Ix9-fn;Tq;`ty zCD9B8spe))p?s1~>+6PzIcZFWpdebL{)vb4q+Ha<`L) z6NjIA)6QUxTyN92cOG<~&z&kzw-%sKRQ4|PmYVL#f;OY``bzFoBFtwPgVIwqxK~Xo z)He1ea8`xfHV%xuZB;bfn)RdP*i&dhQ%xM?RmzK9dITFwU3`ATyl7&e;Yj8^{+xj| z>IR>e#YW~Tp_ormbD<7noi6l#zioYZlJraa>e|bq4O#^a#a%p~*&BFQm%PcOghro#|g(t_KZM^?K82jFpo4T+tH5#Fp=6qK(QzquN~@KNPNA15qYFQCeVh zBNU?9N>1owD|{x1<3d^Mi`aW?#?YJ%TKK>)E?4j)lvA5L9V9B&dRdM)LZ+Q{57|KW zq+OnOXtKC#^%YDySkO|bRMle=FZmwR7HzeQL3~V?h5;Vk<3#9LVh4M2OBK2a&}w7U z>b1J4Td0Lgy6Mlv<9U_Rh6luXdso8xd- zmUca=(<~39m5_{<1cEy6DT-N}BvEE52V%0U(0$(+Ha>BfWhE#G%F7HX;pty#pm4hq z3cpckmha$X$i$jhOVH(PD*0!%S(rwD%s-s<)R<&FKs_M_Wkvh9mm&3PAY^b#aqUy4 zmgmLqVm(`bcXY2Q4I@u-xJ^@F3`;xYko6pj&~z;B2+utbk;nJS^!;_kK8DeHnSL5% z0i%l36ezk;^UA^q4x4GmKuO{XCQE!n;i=ic6W?Q&GkU>1&sUuYEh^w(uGudUiG#}B znHObJps7kb60M1*!*s7NMB%!+8&Z?!fE3(W?b$cnmx5~cumaNW-t9rPyP4J&%k0)* zZVA>|W3v!TgqH|y{;4}eA$PviQ;Im+71Zp5*%qE=!<5(+aU7IgE#KLjO**0F;2NQ5}3()P3wy<*5`BdM4tj=6S=@H|4=2j<7WsP=kWiAblqf z>}7g*b-PS)5b_f1DK%_9a`A!TEv<#2?e)ea3(SXD+#Q&GSFY@guA78(kK`>2x|kM( z;hh^(nntTsDQ@z7P_xq|$>|xu%~h5}^8}xKGw!ZEP1pD_(VWo_KO^O;Hx$CD!IcJIV|Dw zw&OB-o7sw|-6xuw?hez0nU*CmO=;A5%NGl40%c?_=_GB~*autD8Z|+(P&DVMd$>yf zIbm1o0*`Z+2EqrA0mXcoQMPtFfTt~1Jm zte1~e4cHBDrG-weV4;PIBI@1o6^XGcutdD111HnTjb^y=q(*nvpyCj9!`GmVqP8Ot;jw_`)<*VrHr zyqjL#z>4Qo2>r#GIiw?VPmhA$u&3IZ>el*DYmB4y81Lekhtmd6I+mCn&aelUcDBP( zvMv)`F;ibqJk+sQIcGk%t0g!hdNHe|HY2Ce=m^FUNxo5u%u;_W=(Irs0-19+=T9$Z!A6fcIsPJPDKEYO_Zd&^ETC= z+#!tYkbr@k)-$R2N|#zGyn+jM4eWl=E-xn|;*`lgi}UIBF8BmnSH+M&US? z)g@7Biy%}>Xy4!;s8zN27kkk}|Z zw%vTRE`X))!}|+9V#PupX}i`F9}rK)x3k2*q$0Fj%-+V z`Wj0e$Y?)oY1PNSI6)o@5?^GVYBu}TCD+A#f+vs0Hq3PoUT^eFgW(*G6xyQn{dmu+ zn4)eWE4(fWR8o(geywMO>7_u+Q`wrO0Lv!lIw5M?mID~|mVE**g8hCY<=Qh4J zt$7yXtHsvgMp~IxIO1UZ=+J}zGluNrVD|XW2>0(UBB3a;W2Xb5EBy+0-=4ow8Q@Md=>W{ z5R;IZ1o7+J^Xnx@`05p?^R70ki)O_VTAneK7z6~_jVuYa0V=ViCQX%8c>}@Rpe6=+ zgQi6iNY@edVb710krk(*+yshc{bd~L6K&^*RG8ILYe0 zjwMv+U(#_VFZTIJra^J{qrwM4b7);Taq1;6VOG72w``^95co`_YPCn>5oE01!7YWx^U&~9AsStocXiM+(`qIPIc!IA zMI@MLJTxSnY2V}IisSP-ri6hdh9dlA{e)oTWrnB_^apmlP7F-8EE9ike|Y-(kRtaK z&+G+jzzq>9089Ci3l<$fNsD|S2KY|k)9Ut9cs_sh-pBXn?+0W@`MmEQyxxx9?)DyX z$0$LcH27!d2nmkGCr@=VndkAkG%eb~_=buOUjIa76;bQuL6e$;hHYD5i^i)BERo?i z*g6R63@_@+P*oKQj$4EAs#ftQP~|k8ToUA{mp&jF3R_PC9J+vSfK0>q2<6U>miZF{(GaqbSbe7q){^SJecq?@LJd>z6T+^sm)t$dZFa%MVRd`+> z2chsYcDN9qPO&)-i}h%IyBfi7{AE3Qny>Xwq#G;so3|=8QQdE!^ zjcyZH!eW-`>w=esYv2Uq25dKd&Y^+@tVuX_Es(CJ-z z=7d5vr@rM@>lu*U#IOSAceBhkW2_Z!(-o4qDQg89?EtaH&6dF<0H$ZW$Ja3zALNB# z1w5#C&6p@l=H%~|n%G*Ig9_(tA*q5I%Q=`NyKYt@1npxTlp-fnfZ~jx`$+6J88e-M zVK=H;D=35&)f!^tjW6Jenc=z#{#0M>uP3!OZByGG{b+0h;oyTI&ED-jpU1N)?}=?I zCoS%;Vm3HNF-|o>5%=l#Bj-E&8jzolTBGZ3lE)fG$7c*t1ZQ&h_9p1tb(Rrw7aL&y z=3}|ph%su+du}*#rBUBNb>(zldQuJr*g@E}pBe~`MXKSn=RB(iv3Nd3(>JjnCEcE(bD{1vKUco^$h@8*->+x@I&l|NG^{;^dZYW{i(4w{TAKR78fo-pV5ksi7^C6axwFqU(?3qacnb!WG2XN zcUM{oRTfm?WdG><|DJ$%?`&|+mxfICOGEZA6Se+Z_U1oNK+(kJr?bhInd!d~0bgmZ z|9&E!%G3YGtD0(YT36PH@QWzKhM9y@gWamd1~SJWP!Z?hbkLY6f;YF1UZH)UOD_zR zLsaW_q=XXVMVS2|-%mGDYOu+>>>clTHhucN^?R#h6`!x$8$^BpNoe)nN_DfGH$K-) zf(@n1it7N!RfQ`d%c_!XQ(va7y>FTa$?2Nk+I3fmtKv$cd8ij-W30L;tkR+<;Z;;heP*x=?zVQJ-h@ zQ)#*>UnsYi2WxM?+I4t_>LJm^q+=fQhJV7N%GsXTg$Z#n=a`Het8@oBSvVck0Mmpi zPmF|-ERHm2eyv#F`EquV*l$W~oMxH4W)V=D>&mKL&k|D!(}f2r2*xQ>#29V`bB2sE zc*uWfhB4mStD(9y^sOJq6ii*k7M2-i9U3b--<2uk@$+oJtF6!Q%$-UsIjjH)k@o%< z_*r;#N%_Sk)Di@jQ;W^Fb?zAVDzuRP2o?*?UiC7*5y4-#Lpw+l{zL?IgjP4^H^rigVI%-|S5 z!dqB2OI(s@a1W5^zQ&iHvTPFi5d`!E#H<|l5=wP!r@1HhD2`Pv223OoRFP_g-;W9ON7yLc{WjrUcoUQzh zMAH_{G={;CXoY9n7RiAKD+YoCjc9M8GhCGDDLSj56Hy%ak!T|pX^k<0wa6i2dBND= z7qTaUnAGQA=q~=4!8xj_v?0I@E&yqs{NI>|`mc`QpJt$H>-rCIRuf}MTY1O-qyChw zGHZvVi12~eyIgD~Sf^6GzHE3TZW39oS0*cyh^0gn-VCsYn<4eoR#P{^cX5C*f@Pk zO`ZqhOGkvBy<#O@I_}qq>`!`fI-6(7P8OPT1ms({u5^x*0c@AlNl`_kI z+yltLaW+a&hHaLEPVf~NI;pKE*0B6#%Ssz`4J2ZIT7)rdW=kmxM-ehF+e=C^B+c?r z!g3A1Q63mlWLHbTf(c&~DTM?TN(5b8a0Kz(VP47N{R+2MDEO_E=I{Hx5OL(~WMHy} z*;>Z*Njnm%hqUOX74u>f<>@S9h8;#nKuR3K31%;=qm&U}93>ToBu<519fPQXHKe-{ z-E}=hc~Eh0$&2M?Y0j7Y()@#R@R)_yQo}F|x)$*iyUl+X6TmMU9109W{iz5#sAKz< zT5hTRL9QV@)8|4nVo?Md@&nOE$}%e|r2C+$-IF+Pt4_y&)#gJ4x2cAe@VQX0b$pAU z;5ss<=`Bav*L&xzomQ?>7QK*)RJOl`C)P`YXo&)YrGfIdiNCRukJrmrXl0)0NavK( z7I932hH#-CVoJ zxW^&W&hukn1RxnRr;VO0#iithp>ny5NNQhTfoV+!Hj1Pq0VB1yJmu@&U>S~ zG34Fk)8g-y$6BsSpVlO07)@1vw`EHztKI#DyGoh8O}KxXX*)5TV7J z!ob>gYxuw%9aWJ5$dO-0!tJzt4C?KuVaG-fczh*WT4%r;9e?~NIP^{V1X%>U!O%MY0VQx zzOG!Ny0HDgbAkl0k{3IUl+sxB?nuGIP{vboQk90?pS`3UiyFqR5L;D07h$un>8-T9 zP#UJNPK}~+Qte{(#KK4X?2{s+6hu`gIdWmYoW{z`+};rQV7&#mZb_6=v2%2n@_kYD z)=98xXtLpz-}EE|CO3qBw=V0I2$?5$By_$!68I}>t?$zIi5As29MBibe1txAla3to zAyggI8&ai^oTVF=s?@VvSpR6$ih7PZ*5~RLCB4!brIGnu3Tk9eE()uZrHo_XYfIO({!*|1d>1;%swqE_*{=Irets27b-Y-{asVOqm*62(v@I=MNy@KzT zC6V@mZrOnR$!CJ}T=$V9@1R<)jOXQpP(`&l{mKbVjhPZytf^@Oq|s_pX$4z`+yd2g zBqwobb(f?U;b&Dq+^7Hetlj;FTo33@&lPA>*SJ6U&R(gh{Jxy^?yC#m9Ti+vae{gq z+JKmEDimHYKCE{wWbfBYW4Bn1zT?(vGi?W2m$3o%qZ-Je4(Uv{uSV>lw zIFfYXGm$uGaV!0<3vDdI$dt<|3jy1nw0k0Sr&Io<(BlSE; z#Trl40yMK}G2_~1r|R7(*eqDiryluq_`H?=NA3yGr>mcEpL7_k;ifxUlXy(9I*@D@PzV1O6*j+sgqUp~pME&62#=x)|>3gRxqP zCQcUCsDceMM3csx9#w?xkVl{d4uJJI|iP#2HN zk8EV;79?Tikna)$3gOsJyhzHv2$m$AUKk;S!|nML_Kd?Uy~{JKCMd3Hl~$h zgtJw%Cd(%y9kbCcxe@llit)ctQOCK84dQk}F?s`|7QzPi#FNqj&g`Eek(&t-;Zu=L zX^GI6%)9cuEOV7vd%@#`X^T-#JEchqFQ=IBbmY zCZ0SP#4a67uL&K!!ZSxbBq?Ly3tPIBG1z(1)39yb_bw1 z>YxySO}bAIM~ATAcw)1R_IXE>iCc&d5J#iEh-=Whd9Mv!Vx7+q=7svW!R-cZbF-e( zrd~%(bDc|5uik7VBYrUz;g6D^&d6T4%FoL-ByLvXY~-yA=k$l2uOjjUOH03;N+702 zLsiT9l$P`MJ4-PckTFbwv_8KFCCDFOhVGEA$ER=&R7lnKksl8lEH!qGi}IYrql{{R z%|g>$-erdW0@aGkxw3a~P4eg{r176+I;3PFlEuXYU*aLv8sL>4j#dND=zcIMwOS>hotY`X zL@&E9_cFwOl~j+!9vn!BNfVRs;ES5z6LnBzNLv-xPov&|kSy zS33%cpbVlKW6_>P5?}ed3b>4g6p(l%G|JD-kdjR-Ttv+>N#;1EeW2V;y_5|8T7g^m zTF~_=F7?v8?~ZCkd`*Oq9vDj-oJ+*#b}(zwZJapBFh-YZ=H6%GE+8sbHrJ|h@@T(f zMcOS=Gd}Zem$jB?Nes@QYq;jq>B@6s?>Aa*Zh3s{eV&_f|D3Wcby^ah%c7OH+O6hb zmBz`pXZ-)DrTzKhta)`^yj5JsQAvL@Ei4pk6vo^E6np^U}UMbR)pk;+>D zS;`8|5v3BOEDgSId8IW5IZ7HuJ2GO~NH!2sLltNYKkKPawdoB>me{!x5k^4rVMlB9 zpauuXYf0)*r3^cbu(M<{mz&z~XRKWLPxoy#lcC4NtEn%!*CF{be+Ayx_yk87=pm`|O9_+?TY z#m?`MpKDNF{G)&Z;YR8Rq<;rFxr+6TcrK^ds2c1-RY4UE2d;~jdb%n{g=Zt(^RbHf6g`JwhTnVM?Ip7-%MS%S>+e>w zfezP&J_d^CG%WRI!Z@CwwFNi(Z{D%qa7u?Lr^w^2n8|f$v3)2!5r)LISz)iA;2VlD znqMV9X({DT1)aIl<><&4j-^_ftTUDwK?jt_f^7+2Bh$ZQOhG%$(g2)C8Sv%Cl zRoux4*OYaz&bq{AgX?hv^K71uiHz|J_l(AnzRDCby22%g&v&ZwEW%sHa3%_YfBSBl z&~kqJK=7OGDQCQtTKEf#D?|YYjI}~r@ZfB_xM4j9G;9{qibsD40!YyG%g9Tm5 zSleFHsr{6^N2edy{5gh*@zZ!OoJQ1>aLT)2vTX7B71U*%+<799Y(C;6IIKB%*_ zH=zq>c6A=e)u%cRksy4 z*95-a3;pRM$_Chai4W;!-XT^nV%Q-LxMsHI0&*??+y<;lt?z-m$^X)*L)v!{z?gdf zbdjDyH`qA9wxfQ$Eg$otFZUrj!!O_}utjabi4rcxHS!a3pHNE7rDgVO%zP-!sLaSq zFzTdKySkpe7(Kr7P9DtAq&X`0n1W{nqoo$TwvLCCG^&0 z239H_-K^m?$DYQkWkqOyAjsP(X!$OGk#Aw^Qtv=-#6dw%t_MTWCgqFpt=#O~_tWf+ zjrS|PvwC0JqPT%46*q4(6yLRriRFW}M)L6$R-=FRs41Rq-MaXQkBo;vwVGTAK^Wt` zboQV>84Px|{#ICSjx_LxtW=FxPp-fF`a8Q9RRWzDxHQI)23xp*WVuF+_h6I$8#+R( z_{Z~m>Gi=*$OjrnONmhN3TViEuojjDj(mSVB#`)ZnaHlv(eJWUka_JSxF%r!<5%IP z{W8Q!lG~c$XjkQs4ggJ?;sv{L`RF-=-m?M?s-9$x)uteMZ?fQNTN=Vx%etTfA;CG_ zHz^06Z)K}q7FMY4sL7{FScx3GAv7iK;GNE^56u^zRS#&z-#ok1jsqOiBn=?UKcD9oq#F*ZdtsN};pP8$&3Vmxen&AG* zQx3FVsbG|=Ug)Zm%C1VlIJ$EBJuvAToSlBsE9}fWVG)B&I&$*4tR>G?!0XsPo*Z92 zS+1k(HFbP{=BC{(w<+s^&ZtAh!Q0osDEr*@CzJ(XH}up9FOFB7M))WOx21H~kKNn4 zV4XGgO98Aio@3fmnC%g6m??)4&_fIU;o9$_1F77`53_U%ev|X|Z8;^b5$T6*Ge7vv z)P*n9*VE01i%Z)`ZkW+1svxQoPgVWVE9I6sU!j?1>mT&t@lCRe`5i9D5i2mW`oY-B z(@lF;DAVJHg}P%w$+DQc{#)*r{XHygz%<5(%V%qS?X4Xaw5e2N&CkoUu9C zmf>W;EU; zE`|ens07JrH1i_2ed6q25y^?1nUd!azYG+Ui`{O9q7$f^_e_e%{56amF+ok5r;5MC zJ6Yx5n(~i(3W}r`K3eBjg8Bt~IZYC?Z4<7Gfq~MH%s_XnR;qJ(gf}EQh+Uw!hp*k= z*l@tvnWOK)jy<@|bZ4`0cSVCMWMk8pWYdz~v-j--$B*T*whv<_I{$%#Kiher+XFt4 zf7D>?m6nsNnuBj-gCYBHflWnA&Bi_BhtS2ESboAS+NeH$6_9B8Ax z;DwDV#WoqXW1@`Nv9ra-?+lwZae)$C8UI~=d24A5H3)r+DDlBc5kS%Xvt_AzBHklk z)^T+(K!l%B?Cn@+I}+4=-pX0Evw&nE4tOeqx?F@8s|Ao5kvX;k>>0Db)f zF&+lmmYVWGtNRWKEpS z?Tr74jJm|h$^qt;gL5|$;)L>>-mEzUB0NR54ga?C#`VWvKC$t~*8z0ym!f~Ra}kz&x@ zusr^nlrua@1siQx9Yv6OX#cx)a4VWOVEKbVMJ=N~yG;b|Oa%;vl_f4WuOEQ`oLz?R8#v{+{0%8d`LRXg#TLmV%1;-)f>|71uEsz;j*)yqW%v(f_As{m15m ze{jnK9`%=9UZs!0Xq(U`Ljwxn{0JZsgn%$mMxCrkqn}SzjmnCIAKY?UXhVYwnjhY^ zM?`_3)~naUr*s1{(|g9vT)_!T%OYUIbP?sDV@P6JE@a=)mjif<>PADpxS7)|r|8?m zLJq|cB>Vzu%ceVW0c{nFhgK<~nVc$IFCf#O6ZNA|#Yp|&Xrf%LA2467zNeX$xz;4= zDxnG%ErrfsPKXedtUoYi@-3@YWGFUQoKyb<2fi-!caFJYoIYeRk8oREu8vcE$dqzq_H8CY9*8W>ue{Pi+dt8FMFt7ClH zK!D8u4$-NKs6wF)lAto23!o6SX$G3pM``+*fHSsFhV90#b1|IyP`^+g>tmPeUB?WX z?P~q1V)nAwTeh&XCd)uFCu7D{cXF3~{qhRnGkp6!OWzB`5hD&2LgPi5(ya6dyApxP zslLj&b!a#&byj0=WC&@1-C@DAh%UoOx*3%WC#YEGrTJ~ns3b=_LRV7*jgmbG4Acg1 zsjfvb_($2U1~0erhvvA5grHgTnP7SD2<|lrrFCe*3VpVEo{p`|CQkb2&+SWeDAy9v ziA5XYRu+q&F@^f_Z^@l_7D+v7^CLtDB%zHt0J=(Ql%|wh5}oom9Pay$Y2^@x&K&f` zZO_V(mj^0C#a`OYfb7Hq71CuTBKiaR3QNYUB3t=YX&vf&sEm=Qti2fO)1TDJW|5+a zaiiV}Vy}r%ST8S$R1XLG7=q4}tB+h)2p!?03HGz<`c191y;Lx$p>xO~A#N%cLp5k1 z_9B8|^L%_Z8^#e3xn!%&otvcxC@bjs8lc2kIuNd>T#|}}w0H3%)Ef271JJ)6mxv3AhQioYkD~OwTDlm~r zMZKsH;0$v2Kn-&q&vf!xf~=mI!{$+AjHWh_F%au_YsAcd&NCN}dE^Qd5AnpEwr}dP zp+)F$p^HM@Ld`Id&XDFMsy=IPN||@!oLoYqm}Lq3rSCq1(m~9keMq~pWL&_K{i&rz zqa>rvx(P$dT3=#zPsU1TiD{+kL`!L)eI_Jj9>TpEWwnu!if;(fD6>;wV&5qO? zjN3Q`KYE_T=#jzPk(k~zKhQaln#OpWmzUX9cj?1AFD#OYS)g7|1+&HwprKYD6s42S zByU=d0aar#LT0V~?PRMC<=5lVn0qx*S}GKNP<*ItYgO>kWvy7etYG1hDTt=4Oap`t z?+KuX)+eEbG@>MDW^}-H3ciA6mdW@GhrzVb=(r0TgU!jPJ4RRM^^z3xGvtz=F`ISW z^7d9z1C*PT4y#1p3?3o)OU92Vgh|S%);#@Wei&ed=lUI|-s4NRdn4+{<%@CcU#`Bm z0O32-lZzUi*0>gYaE=ZKK|zP8VpAE97Z1;vzD6q~OJS1P?1v@XG1En;>RSHgD@I^Nq`T5+oGI(KoXz z%8jdf68f1)y%DVR8E=bf5(s0^Zxt1v>>OF_<&>VvK$Jro!z<+vs>4UnA!b;|0*7=I za!7NGY=5e6W<oi!uG($bFQr4{I)ewl_8*Vip z#G}1@&Z3FjM>xmF$e&S8;+CZ~TJ#EeJ4nhQ=@Y{n5U4{+6+op!LS)1KrW778 zynn~RbVH04C=aGrP`@W>jQps%^5_?r>CcalmXO~Ygmv_be0{t>c+;BbwVPZ}=I!46 zjE9Onb1Zo#v<=@AuCxjN_E}u&jo49nUL7s$n7hp-7jID1|H^G}1j+)4zD@L6XcY1h z#Xr+@qb&e8&EQ?+oygM0fyzoaR0>d?%Z+~juoC-(tK=8)c3YQkHACU|VG zUUvwy20iK=bg%+vFnP4dZ@WSz`0ep=QU)mUSj5RK1?r$H3e@S;YC!MR z8X)IWyq{tps_Ns=K`_L@GQ#|1#H%z`Y zDB9&L`n1$A z=rA`^<<-mo{*{SD9u?igtHHULF1p*l!sU#$(jHUn`St5!)O<`*Nu^6P-;BO&zC}_U z(Kj(H4LCwlrIay{r4_G|oXW0ARqDCho@w_*=5 z`uK1wh*g)?B0IOPj$(~gjbb*kKelBo&*1*}A_pBt$7qAXe(q1)mu}~YL7=sf?z@gZ zL|sm0N~G?7kE1iEcber79{T9=wma?vyX7cZR=YCD5;u{9nQ@i|gpAov2AB?uj*;(^M8)YSXo7%X`oldD@&QMljPfvoXHg!@;hFoqd3_03L5 zGM8tfjy99AT%@7wg<3;s?Uk_FY586(*?hV*d zyTTIlC%FX!Q7zY|%ONL$y_K&RZyk08Fy!Pu!RrsjkydF@NW%C*@9XKz zYahVJ^Yi%~_jhy+avt{aKKzVR3C#m)8jcW+iry2i3=r>C zc}9@-`djA8QP;tU@FW2}Bb+)5<4q0(9tYnQPpQe)LIa9KhoQ?%MWk_EROza_ zX6depG-I9bkyKB_H?vfI2g8ZuKE9HRn7KE$sgIy7wkJ4^*=FD7-m;w3Ff-N3(*}tN z9+?2Gga<1Mrsa0Muc%Y@O(D+5-Ht0+wHY9w+jke{`2ALH7~z5CL9q)Ut|5X92$3k#xFw5=#n}XL;CUW3>jHd z)J!ugKYq)3*3F>Aq$12G*daXmOAk8*E1bb{<>3P7Q}d?T0Qh;W#)y!GHi_1OdLqK?lU+8{I5m6%tE(K9Z)eoR zw${-mhE)HMtT`0#c3WswtttAF-}d-}XZ!&aN4}`EP5nK);XTTds z8*>I|;uP3B&{y;%ur}2hC^l}B?6J|9tH%o?HgV3FEmNlPxqSwI6mne^k4kwRa_xZ?K5L~4rE?qT(=Bze9BwpXYoXnph&V2ES z-4bAx?|+lTQPtMP$;9~2`TXyup^>$LlT)_pni7D+GXO`D%(aC6S z?amjN{rtW>3tCe3sZHoDw!{tttCV~+^DZW*it0=;#~BLLX73R?lgNXP_!SyZp}gDn z7b#gZ6(dRy@>iY7HK;D&YPu7kGjarp^AOuu2=@ctdqj}Dpj}~wJ~R4rQGcg}PZ^`M z{>UZ}uKfkL%!F$6gaywzysL6Bkc?KM5olU^2T)i-5z^R@OCTsX2oRTf1)Bv!quXjq za_T305b!x1F=Q=}jLlalI7o^~O9wSCBkpeg7=n-%2Dk%=Gi@0TXCc-*(C9_+{i_S!=22cv#+IQ(3Gxo(D_j33-$Ilj zPG+X`O`bl*g*w%(xF~==_6@zF zmhuWo2E>d3Lk!6bllQP}k@S(!vXHW6+xRQZ70}-o-sz6=4wAYj;`3ud#95>~x)_|LFH({MmB<1BX z_kc?Hdu9BKUei=EOgK7AJ0XLri}Ts%rMi-Z^EaFx)KZzm%+BxMt{g_dD>+Gw8wAGN z8!4W6DVDix)BD&hk6AS{^bPcyomsVi;EjnAOlZqw(pDR@Rt7ZLx_P}i4mQ&j(qmTW zHkiw+?j$EzHorVh(kC%WtI1)nKx4@b3}Wm0@*vy=oOs6eCU`^fy@%76y&hWcoM35! zBMPO>!t?@xhdV~+<>x`+!qpt4d_2lO@ zybr$S`uPtZDJ=OPfMU>}VB|-v;-+!zSDjIN0FBHucy1rc21kF`M%pn;frj&2S3|H= z<$Ojy{x^CChtL#o_%O25-W(fm<_(g@>epG@m!0BX9Q9V_G+`0=M#HFjn-QBOO9aq_%8 z$TO(o`d7mAY;XAlCaY^B^HN+JGKix4^nv(P!wO-0qZ)rrVry6=aGTfA)PT*VcKNPh z6~@H^;k#g`HmUB;CdIuNpkW%-tYl+S+#f2%5}3je6Oq-FbkUVC=gw|6#ZnFLfYpYR zc=(X&T)brPVF5H!LlIRuBrWCK&O=pgtn&MFqSL%e!q7^}RscT8kn=Wz-EyffVZmSn zb(umzjc8!qrEKyLI#*_Aq&Es^m}d4hxg(bjp{RNBG$`a3UQjf=LVC7qob@h{j|RS0 zdWnlK`}vCE=bC;Of4gp9h_SohixXp#i80tnTR^Oy@Arjk=ku11uAv)i-zs_A=j(mh z%GJcdN2_QQ+WZ)Pd8G^;1BWy(MZSO+bGYy zRhZ6}xRuhJu7a}P!GU9Gk2??24qdAU1Xw)4oe=&Tf!6dNElGMoYwQ0yQvR>q zlH%xTI6=T}$?Q|-2a=nWnL%|u8Z;sjbo~v8s!MVPnT-brH2iM9NW8{c`e9c3vm=?4 zpN`#^5Oc(l8T9?b#W@jj81YNZbrzkhggFj0?m_L#;i2_m^pI!lhfvJ0IQ&CVDC%~E z%4xyMw0xP1M!&$;pVNklDze4HJ!@ZEo5^Uj0??i+~N2F)xbz z0QqD^c|9T2=tb(W1ooW*k%g3%-2a?<0&9h&#sJceCjfz_)_?PfD4RIAnAjSb$hp`U znmGQuHcPRpuJVEa3U6z0P>LF`A*g6^z&tz&$}RJECXOlNs=FU>*ZDN87)Y|pBkZ4X z^gIwh0|6{P6SuZupi-FW!xc@>cT$ z?N{-Dh!b7OgT|}gC_K1s9=We%0o^_aty`} zwRoZ^-9;_~&Y5sE6=Mjgn;Bc#S!Q)sFwETa2IEfGzLmEIgvj!?^nO&B;1USkk6k3Dw`xQ?4tH9EjM4LU~Kmu z2*~V18Oi5a+Am8`By-NUTeDhLR|yZHOzS=2jExzB&seVZ@d!~_H6Ka3z%@#;1O*2o zgM!ovWpoQvA$19+Q0P2y<;9I-95yBHdC$9Uk)`bqd8BIWA7*b^P^D>64>SS>8y3Zb z&>7b>hOD+*;x6wp8ZDk%nvcRda3F+LH=^nIBZ@3t7n%cFP)s_Go8Ln;T91TAoOM%b zjheLzf<0<#@T)-LO2*m4_&a@Y4hA@1lFTA`r0Zl;C%!o}I|pq7%_6yv7=b)4;J*P`+f9IojL$G9V#b%|j1JllXUZ+siqy)fhfyZL4)@(&H$##l#Qoi*g?O*OgmFwSg|^B6FKEmkzwm__>nsD1=G_4} zRs{chR`AabRI%!%E0Q|OR_d3;FC$?VNQ))W(Wnek7ELXLC8`-L6q1(V^{cZ$H4e^c z^@F>Xe!n?iK;Ab#C?id)`M$%ec3#UMLFl8?X;_)kofzf%JaW1nANBfuekF*+2X$;| z%q`zoG7GUXgPBZ@DbCdCs;lgHZn3AWVS>AR+j&b?m4np{XQjk zR9@AAH3EVZxL;eY;IB=bq%&m+0eukzteC*hTCAG9G3_bJ<^cH^tapM6 zQHzzbR|6SEs_exmf*45z${w0cdXP6=Ff~f zSwn0hsr1kY+)F0D&meVY$aYeBrv`$Ywg=&SU08Tvu&4vFAORthvzZZc4}1UysPSe= zI@!Mgq^?LD!Z}89x+rp$#*6*ek#8-6(r4J`1 zD%w!E85Q7a=h3R++kV)S29UCXB)-n8F3WCJq$ez{B)p%N_d}t>q3b@AIKpBEzxxX~ zuF}BbD={;jHIdtC*Vt-A%taqs{bb)XEjElh{?3Bb9)qn&b3p8Wfn93#w7ODarN7!} zydyJO7odZZ3lMcv89k9@o7K^%UE*-{F*3dwuO5Da^p@IZ**n*se$~&L>Uu=lnixS`T#fX5oJER4skk z!R+q{#kek|L|{OpT+b^cLs0UtUSHFrvQVYi-upqJ!7V2n?%M5M5IC5?=ffoHFtfp0 z&cQsjxqvHNo93v#rNRO}i#H@H1 z(XTIwAewpCF#B)vUl?N;SWun5pWOkGO<2qgSVNz*)HL1J^gS%GZKFTIPU;kass(^+ zP_^2#BECVdB`Xjuj>!76+0LQsNd;|;f#2Lbs?)>Q>FHS-+`|{ddQ`D#o{^a<_VGGu zpJaB2*(}TNA-Ud=wol)VZI7x)saN?tSgIOk8S3_Z zjlGrf_pr-tY?`Sz3}`<|bIBP)*Koqy@%-sCdhTV1IsorYmCaJTwa7sYQfBnV{~zJ+ zPl9*>^6d^45dPo+jXHtTmKCOc;Lb@lfF$OEKmrjM5=HDe%@+Rp;!u! zJ@`JUOC_zCk6w9O~;AqG*GMn;S$u8&8FPAxl|%OLg#b z9^qE6qkP8}`vwpu>2$)eLKUqm79krZXM_g`Alb6D-kW8TbZ) zx*CZIHnjp6PR#Ogj&&6<6WIi6Q||~ORkh{d*C!LRy3^}<;|$)969w>MWU)_@16*@@ zgSE`SDE1D=Nv8biifxNzp^D>us|oZ1wB-9w z<*^Cc;D+5^gDfmay9?Dwcy1kg?Jk*vJ-Tj=Gq?o%K~jtZ&}4YQ#}1juREuKiLd0H3 zCgL+XUu^~9C8&h6Zjb!Y)q!jqQ^sftU6E4b#cWHre@55zd3Pr>flt-AL~d~49#C3( z^_3UGjIpM6Sp9s20{MlO@K z2@48IswMl~Bqc~H(Fhd9a3Q#Eg3+}Q+L@XrS0Y~&bUFeKf|)mpq170r_!K2RxK3v7 z*JIw7KXL=tbLGV{6TKd><^)GH(~jzBMDnyy8as2?RN{26TJF+51ReF?Z4 zJL|GHmvSQGbHZj6EQrBuY?Q1c>IFcScpu1eu-z?BuO4HA@tZr$e#Q`Ew)MaPhYSJR zs)x);!!55f=}*n*tY1*e^Hnr&5TTs>rlCQ=drvM2=E?Vzd*7(X*gNZWn-7rH;I7RM zy5y%G2oN4CO|EMsPL6VgT=OhE(T5xcc5IW<2-BO4+s)=p`FzB2XXC`YiX|Q}eFq-2 z#z9*4gKktHQ!#$3%yDQAg;R4dLPXspi6gPr5y-C7;eU5FsxhfTi4#nY^LYKPz!klp zb9Lq)cAZ9d>Op3)66sD%<5G+?J5t!gun^`$5IPY#67oLakB9y3X7Op)ISI*>{$@ZS zsI0*f4kXfVmxdmXFxT>;-8$T+<{7d0@xs_X){Pu?AFHNu>o8fK$Yi@c!oo4qCZxLg zH>6dNTjQ@}79QEyZtb?|UF3qLePpr@W>U|oCyqf|TOZM*ugfRp7nsS>ovTmb6;q^J z@;91`$X<}JEyY1i-$nVf+oGsFUjJ=4GYez?oE+frFaQou;(z4!{VU;7(zQbZAY6kh z6Ryn=P^y*lXsG6w0FAFX7DX6HFe}64p;A+Spi*7asVkxV-g$H@>wWkeam;HPh>irU zh3t!|>{r&4O|Rb1rx(~hVjg4niY|X%l`SJg3hlA)Uh@u;7?m~15TutqalBV+Hdo<2 z_FQy!GuFPuO_=&H>BMFit2M;n50f*9*I;1#FvH9PEiNE~d&59Udbjyl_s0TMv5#02 znNM=wFhv+@vv>NdnqdYg5Gz+yE2L~MjGd%!yRekfuzO$`ZW#uzpF*%Sj74O(Bo|PW z0lXpZ?ei`6pp#@sV+TMP!~T;(5044=3{K5Dt^hB=>>0wBFS$K7$k!K#~V277SAN@m4M$3!Y_ zm0m+^_ijKb$2yeOREb`|5F zXAgVt^eeyoF(k+V_QoIEBCj0gdeikZ^_BImBkQL`dUZ+CW@Ts0wG+No*c`%7dax3+ zga`eaBZ|R*QAOvjm89H4M~Tz ziv5_A5>^YCr4s}{NwqxH=t}4L|AMamiM|J=ba^2FS4av-y~Y1$F5^FfaJ;tFh5&%> z;WzcMBAb}hx)9+^umS^yHI(f7?mu=VB-*<>=#&h6P1=2Yr&GqsnBKnk#6}idrv9jB3?rV*#QWuT1%`x{R`4y&f zvA?4eCTX}sTWp}#A_6{QhMz}m$RCf+xa6L&Ej&k;Ntf>}(C2*$xl^d!Iaa?ej|>i= zP%zg8h&g-}tKHT9VD0U?fH*I)H}2;`27VLFr)`FeMjk8>4)l`*zJ+;lJ^oG65zO|z zsd9TuC=!9J9x#6_$2S1l1{6DMf4$k6e^vy|cKLox&Mjy&G^p*ZcxX6umVQ=s{}zmT z?V#z2wn?Mm*`t>r2R3K~kH(U+6Yx}pxDU=z^}`B-UBekWi#X;+*ch~N@ChHqmn|bk zD(}8%=7ys1rgv+UCg$r9qsL!X`2QTWJj{VxcD3w&>BGaT-YQTUA$qoVpy^+^~+!QyNuUZVT?wW zwr(gU$+aAI;y~pLmw(i1vSiz^hXje5C}cS7%H#-Q2Zz6e*Ne?Y@Gvo*XA$Houa^vR zbHs#48X4Kx$Sg(fSS<|6;v5kmqVOh>Ph9MgNrfu|DR0f*{AF(TPdKNLpK22XIMii8 zI2ZjJf6URuz}n^?vx@Y>;xdv#0GT*<4<*2tf1UZtR^G4$glpc+Ov(Kc8zmuasHUS7 z>2hdb5)~B?f1yec1WJ!Ri-Q`Z)|ggDw&EK|Z=hTtB#8d6`{}cLUlAHz7e!d$gTP}) z%}i%<(ltNd-Y>bopKBPkk-w)b#Xs~E79F`uJ>j{Hb0)E=$NZxCX5UJzqJ5>6Ji1g3 zKI`N0>loC(`3p-QM#;kyVXMwnbCuaNuL1Q}#Sm>H1$g8UOtujUpMg&Qx;maXvp)Sa zNDw|(>(CTHhP#?907>&ilC6ww`5OWH~55*|V#uOZE+-upPhdz)B-U->=OF88lsZZktvtpn7AA@Nn1m1sW57sOUa;Yg=>G$AiWPE8lRH=fF;EFnL)o(g@lvpGQBGKAKH?$2hEwn+`>sLPQ6a zXJ*hL<`?G4tHp32{o2x~k>@?#F3X6^DxJ%qt@j)esp!pNstaQ@T17^;$FyX14OOF* zax4!bfmdm4beLOO`rYtbv#1?z>^U;nqAA2fIXKI`aWw(;UuBj47~f|#Wn}`u&&mP( ztjPbs9sP%sP1unKfa0S&#J~O8Mp2UEh`7`U^}d9wS~iE{d!@VEZxOS)T%3BJjUar! z(#chVsnrn;r*^)2_nthR68L{@`?bWJZa5zIlMm>ot^-YrANBzwnZ`?sQhmAdTs_>DbCp#k0M0A9kh9f9ys_cqnUYd1a0Y&0sx$ArBs?cgYh-5}x01v65rYgHQUPXhEY_myE=LokkK0XP z5}r?}h@e1g1gptqerlsQ9sGf~i@{!1Fs~B3Kp91s!xo)#y>1Tz_Eh0!vC56F<$i}Y zz*>z5qpMVQ^|liJ;s)EsbV245wEcB<|#)iYX9I*w{HI-C&=d z`Te^j(Ls-}3G)_kz^?U)NbsI$*Muds3Y9whM2128l_lfjHs0vy7n0kMspuP^ZLgr^ zO~vIs*x9SoVGUV6K3d5PG)CcQlarOkyOH#!6GH9&1_Dh4GxhS(v`P7qwC>t4im!Bu|lRVoKs5U!r$GNQ~TuzOpS5Em4MJO={+DI3YD1EYi|BY8Dq7wDcT(Fy7X+O$w|EIUO=rDj}V>O#yOWuVfKqg~}Z;f}cd z3U0Tj=}Qcbq%3kqJva1VCylk;vVtD6CTb*)98Hzhat%@~x92}V$@H}*!Z8z)Q2R99WIL}O)H6>cG$NFSv3_2(?5T5XbqLx zP0OjHamGaWlFzJfd|`MV zC!5QY{Q9+f?vfCR7pEMLut8zqa)^8t<4N+KKXwsT#gKHESo$YpB+RZlizO@@BjKr0 zY9DRwWT^BiWJll>`E{gXp;OYg&(l9R)ralFUCF{ltvhq>5SU;g=1GLIYLO;_Y!TxH zG%ujbHu3+JH%hAz6%cF1`FRIG)H#6Fm;V1zyM7~Ul9H4i79&C@@fH4lGd5ueD=AQp zuH-x#)Ldy!hcXWa6AfJ3{Rp18c)#DpDRH?(W8CrR#Ns<1(@sbGq3b3v87m)qrZprH zYVV5g2l&3K4U2~Suh`j9T#bX#wuq?vSgv&T??55nwF!qh=1Q~+A-U=VA?gJPoWDb~ z(Iq@N12I)hxubxMn=~azH6%fOa|s)wV#)cO7b(pF=xUPCBE}hE7Fu4MZ(ccabxzh2 zJEQ1#lafC3)$Qrzc(KR$8QljF!7ukldpPDu%pG1WVERsf>L(^#uw8Io*;d>1 zowfIb5+W$t8YRvT=CWtqG8#_~=%F-rI_R&Sh_VMLB-9iUa$D%6%FkS1ZhmR za~jh&;d&`<#gO3-t^LIl;;o=1YWVNZpEE8-jt0uNPCE`ZLiyy7xsTd}Qqe{U&oZFA zLp6^j@^bLlh5#)?d8`O5Ur_jp=(yf4(DC{Wb-+**)qD(9v*oKhxM+LLW(BY^TS_CM za+BTgLxhkgHPVi7{yGEGDD&Xd0}v}XfQbDM4Ys&}(?4+g4|nn(-sK+=x=oCLC9nX3 zh##g)uAqIKNOX2O^Ea;UAVKDA;Y&~xEosdaN^>oRnEf6Q_u^QG)n*^vBPEC$+fqscY`ET$*E;YCA*PHA6d zMIF$v@I@porfvpZ>Nd-cYkxDkkZr$=&lY@iN4oV`A!{!{!q*mTn$O}Espn7!V(*Z{ ztMm+f)^_V2Nx4xZO_T@EN&ApC>7lk{3-Z*J5`X_o@YqBmuyp{SksE+U|4l9TPmcHh z8;yQzo=wa@+NgprlAhssfkVDFpH{E1TZ=2Ffzodl7P62y?BzqUo~@<0aw#u6)+T*? z@OpGm>4R|{;g8s)=o_R|uUThhBYEwS=#!G{d5Y&cL}qbDPnFe&<6R%t5O!hL_AVpB z<`4$WA(ANK3rx%^p2^wkOA*EoC%R1Mbr?z!EMtA-eZg@g&mQfSp&?7wPn`0Q%w(Q4 zQ9wKOng&gwVW!y^A31z9Ql9+yC|Dj#OZ{1-f_$&D_nzANCePK#us3NAwa##^3;&X$ zfpC~b!Hl?X`iOH9yP@}`KGF2V@Vknh$<<%BQ7Nmxjn)I`_!&S)uKyX7{WWYciI#x_ z51V| z(L;`(3J_-Z682OQATP>V{t--^By=iS4LtUXtqo~Vvb-1pkWrbP<|Zz!3bXUkGNEzg zb3e5*t^MW4I?ujO*+u!ufsgu?z1bnA>DkrXotLU58zn*}ZH-?tMtCAIx|!LzC#usS zIfllfiXZ{UW1=d=jnz7m%B6TTn_=cfXP&4&w|i+(PIo}QvBl2ksL1N)&2(Mj6!r}=DKq3 zH_=M_t_18!zwu6Qb1yIfBjF|_wS*74O|Zaiilh1cI(ksRyw+;_<8_siNO2CwevEc>%oZ1Bb(1hAtTlBud&is@X>@--+~5fY1xm|_fi$hqH% z4926O`;Y@AOE=xHd!72I)kl&hyhKmh6yN%6+sa~-#lvbbpfXnSV#CBqvT)18YD(W{ zcK_l-r;)7p5&&YR8$hy@>hGk%(#6)onO;%_@LSo=&iW6qjZ(JyydXtsDa6Mik&5!8kI7_^vo8g zgNg4>lk068e%{Z}`e;(X37wUiEE~Stft`EqIWt+#72~Z3fxjxea2C8bSO`I%S@)DI zT4u^L-F~qp;iid0-o8RpiM{|Iea7tL1-gW=(uKvY>Y)8al3b{R$uArl)B#<9|EX^KL`6dhc#zY0Zi1DUDWxAM(im_$3rbyO>x)HTt8GYU z;W6^lcQG5W`qJjtY*j4;paFXdV0IdY`we;I9bhl+2A>4FqorN;OuG=f#8Eqv^h%m& z!!H3)ILM11^xZPjFxr;%3CXppZMCXmGBRV3ur5fnm4iE&DE5K`7H!x4F#g?q1sU`- zmkAFa1=aj+%{NzIqVH<--^Lm0XL8J&&3-8(3{ep}`Y9QISWDga8DY)9oy?d7jIY?% z6%7CahiRHf8$CWsx|ar8K+5pJR(!C+Drvx^ak=(`ec-|7X#K#~`A##y?IL`qWZu(8 z=cv%^@uB)ai!0}Qyxu}%>sB-Ljj{Ha-PZmbu`Cp4d`Z7I#T7mTGCZKi9Gn)vA|8n#!&yfX5Q9r11F zW0*+CTzM+&L8-mnuo*9DAEEbJhc5SyXUw24l$qYR0WtHfZSPVT-NeWiS!rw^$fxJH#`+j2#M|gP|Uw54dF8>`AS+ zQe}=xW&W!;3GVvsLK{-~cI50o!`QwkTUE<+_ z=z)xVY66^fg^K;&<&caCPtujr2*{DvUhFFbGl#9yw~_NuLSs<>=F83a0r%#OF1Ng4 zPsMLvek2t?q$07)s!S&<4oF7#Yrj>LLyeX#&5xlJ>@bAq`lXHNXWSk0TO;MwG|q+3 zmJ(pUh95;pAQ>`Z#nvwGiv~9Dbe`hq9Z~Y?WZp=?J^rK8A!v)xn9;lEor=y`9_tfBE4|s2s@P$q~%|A z*!KcFQ#wJgY)M_C^HX$jp`Qd(J${XW?5|=ZYUH=gyc^ zx?jHBJW&cJEYloEBb8r&0wLBf*LN>v)A*%}0L`bNiwBn=eP`2`koS1~r^xGfUSnOD z$14vYE1&>e{@bxyYYQi56I&BUCwd_}YikoDXCZ+7aW*lQ0n9Hu{ejR)ileeCfOfP6 zsAhID68}r83rSQcB-OH7;2Hv?GJf=If|_*pJO=0OxKoLbG9<_b7~X7rmAmLLcd5{z zDzkH*m=ofUw}%6?E_81qZx#zatklPlS~A73Bnu+vd=*m@qFEYC%nB20tr8T~`)G{R zCj!Aez`2GvGzq@v^$z2}7+`~g&n$y#5+8lxiSx^OoiU6(uhgb z29WCsJ#yFjC61iu$x21gjIvSjt<8vKHlgq&7yl%hW`}1Cc|tO+>Ehy26Fei0mJiSD zFX0#=oJU_Dv;CgsY>f=FhFF56Lo264DBYk!6cZ9qDJ_<{*#|qjC_-N|5r^7saI@0_ z`viaeh?Cvtl4KX+{qTs(Y$tDPtCM$4Jy`CL*^!c8A78#(5`+<8%&M$t2KHD`%|iP5yx;ur@!L{BtfK_c6-bg)5c4^Q(YlqWpNAze zQY!ont8rpFHEoxq6ouUmoJiqA$qLB6Cw;ek`0^qHeh5N z%V)~dAJ;+(8ASn`m_%B@{mR|`oMSw0I_a`Sa2cUQS-EJK-96r2nk4IEP6SRW)_8n*mT-5I|F0McLBL%D$0%mBW>jfVd7 ztNsxI$hJZE@FSeUU&AYvilAV_NKq4h3*xJ8DNi9yX{&Za6n=HPsZKY@ddcjDOJQ$U z(N3?a(ZYcbLAITCjVHE-)hNJonq$_&uONZN%2bSjx}Re>6xlAhk7Q&nAEG6$yN9}J ziCww#m!t{l+ncLp16hj3AugqUaVbq?Fads=ks85KpKW0X!W>wR=+EUHzV@VTe)0aM zRQhh~4Shp9_LoYQMIb4~?{)h)zm@F2W~h?0fg=D}|DB&v@*RMuV~naxE$13YF;AWlra~yff4LceFb5wicbL7xAk5+k`6ui0 zoBg=Z?eC9(x4Qsn@VD{b|H1yh(%?7uRpex>dI7Ep_BFn+oCT)El1YdTIL~KIR&jl^ zK~-e>cR|&Wfki*S(#(M4?8%~s{5RPyxM)J(cudh?O`ENEd-tzS@(Ej?sNBhBCvhlH z&DqjG<9hgK1Y|SkAg`&Sk~&0EJ4Au;5HW^HAyW$2`P}TkK>PHN)t!nYTE>G2X6HDR zDI0mOU(K-oA`y*A#G_V#+A$>P6iD9DG-mZxXOug`AvTb-i}ybImA+JlI3MU)S0S9? zWracmjb38!GYL;CWjI%)C(spx4rRoK_r4A3FA>y;x}01sz*4&b8f*VHN%Jpy0`3%8m|6hr^gjxu|7vtnG_kjH zbp8V?3Y2x6kX0~zW#i+S*L+hO1$46Ig|9^xN+B141t}58zp`dd97g7)@78N*yE@bX z(PvIPlD99c-wK-L!|Jl@&SUz4{0zF{XiFzMB9BJr@Vd@8@X2~;zi4}zEaQ6zWr(Ql zQd!Vq!fUy+qupSk8BEDCS`M~p@IDf+GFf%=v6_#M@|v-0jjFxrt4QzMcK)@42EDtp{TCAFQi_B zkCMi(`VGfTRxG0$D>iC(Jh{poPR2g*?rH?{x$;XIE*wq}8y#42`^>ws_&pvdpoP%{ zxn#|t2B=yxXlsIo4*|*N{ zm=-DvN0t}DgZG<4WyI?P*cJPayr6?2l<-Lg1qvRa`zC@-)`i(E#^@axg2e)0s0O7T z#?>ueAuav`&u>NK7WP!t9w+kHZ+F(p>m95IE&J|iMFRdA$jq=du)Hc`{9A6)udT$D zLHZ<>fze}J7etbp*of@w&HC`j8T+Y;2O+imT7+U?EDZ7RhO+G_u7%u4wHVRD%eUp{G zAUy;koUV{yr$6Dksh!9ONxhH|*Cs}r7-cSkYz`wq3#Gljg_FD3rcS(K;q8YPn193) zWqXTrVB|&b9WC~~Bw|zH+8->uHFXCAGb4UXhpP-}?hH6tGp@@qPdsJ+$pOioy;!`#E zVgHbfk_hL{zpTuN!7aUx+A~3W23q9^Dy&%B=b%`U#*R? z+-rlC4-kx9h=(nUwHO?Wdft(kzgXTCU=<2NhP1v>hr2CA<#&s&7brD> znw)Ihc6#X`JkO5}e|CVV$xXbwTF=FKWc{9qX}PNJrw%y+(lD2CHvK3fh{u7%3cLtA zp$jc>(5>9&TL#UR>Br8A*@3P*(_ONE_Ili2DO46q%jZ1(O-_VtwjpEmHTavB#|^Xau z=?~=(<|zF|W#5X9-IS^k(k*6H2As=#J$mtQIr#I(yU+rNb}Q?4AfQFgSLi`nCi^nf zvcy2*Y{-^Lk!J^fajtUeu7niV+(|@#dpcXwL5e_y!qx+0a8@Hf?qPFljsiy-I)6Nx z>^W$_Xhjf(?Wyo%?o%OgK%<}2OQR*yVRF}E?-9NBNW@Pv;VFG}->HgUKbP@$9Whhzd>tQLIggF4N44B@;?2H8*TE){5)r0}|ib zdRWaMSY2dxulOGkY^loU=cU;Vm=D>UuQb?XGXia@+?a#CTE%;pWXars?JG9$?1Hi; zya8nybB5px)*aH?9EIy2n1k9UK;d1t!?2*T6@dbiLtWOxvU*UFwui0+GJLrix=>mp ztW4I9VI*o{T#Xhnk3PXkdgpi;1K6DMCvWGC;oxc4$n^0x-mb)_Vlpl|ZYT!>TRoRL z9&*G13L_Uca@zzE?Q2B7Rs9=A;tF_!79%c}yjy3N6Un}P!X>XDg`GQU(D;|!3F_{A zAbpDQB?3!3ndSo&YuVOJE2+#KVjQJV>zoxhT3KjkC#mG}v_3H`x_UGh2GiY57!qq8bsuWawi&};s2Dw?Q&k>?M;%*qH#cT#%kgTtC25T z?|*8o{%zP4?B>NF0EVp%ki{hXuN3jO@d{G>-^0bc5(1-(qK3pOTFmBj;HUQpO*~2{ zv`mHK{@R#6T_0IVG=qv2+1#`oy-Qp6RaF?;-RNrX_naFz>>xjAy%pQ_aZ*o&RVNRu+TIpvr@=XEkq^> zo(orYJ!PN|>S}AX8V79!@wce(l0+WmI^%7HY1*GX=3Q%IycO9d-*!PaY{4KQ7`uGZ zJpO9d(R!weGE?^TRRHYBC2V=gIJTPe`N*Gq_JOww+T<#zmzPh~MB<@GZmXivBUChr zRQg<*HC#iZKvXJLH1N{{E65#8(s=PXH4qC^DKF%d59_N5ta*~|1sD}1MeHqWT0F>( zHC&FtNA{;9kqvbCOT_iHu|l?+;WcYduC{dP{hO65r&vE1h+Hep)C-YK<5s;|%IE%1N2suL+s{}p-yqy%V zA#_*>_#)Y?f%T&tYlc_=mdqUxXH-uXO77<5JoM&9WjEaD6R&U!qG0PUGdcm&9pFMmrS!B2 zgna3$pIh@f=l1v5M|*$)`?1%6U4ufo z$he1~Tc+BX(@~mZNk4243-K0W?Z*I=s~FrGe}hRcxixxTmS^q-xTASS0tG7rw@Awz z2?>>;9v*3p$YMr{IpF++Awz8IZ0rT>mVIMQD^%inveXSsK}{4F<>~+&;rtUa!R~&5 z`v>YmgsKT~ur!th4Smhs*J|(6lN`il<{-BC_7T@(8MylB2VL zO@skqgOx9NT}hLP0Ag5#0l->Tzf6KOZG=D6dBiWXh4f7Sub! z6{ToqjmT>ejbncH57iAgem+6IME+HSfc(KOvX0|LHZ--Yk3Vi7Sf#a?Vb8r6iC}PH z=JdmXEtpNs&tXZ4E*+wsZL2m zp9=lI@d*Yfh&mCF*Qf#r)_;Rf9(4c6V<`MlVmVPm;NSq;=M-JZ8DgbTrw2rG?vIdwAP6G;9b&XRfF)ykGbGcNI{3D+f0BLW0j$fJt9pMxk78yy@+z3T8Bz6 zMW1x|daj8~SZ#;FC2kPH0)#iEUQQ!$VQCnf%pckY`EDWI_`v1Pkfxo_U87BfDt}Q! zc)7Z}mY;;35{$FlE;LQ+piOPkx~Z|rA+bAf5Yq=<@x&AQb^%91>zYO>=_{sC2W8l< zH3?*v^qI{^OtvvW-0$IaMG8@W#8LQ(FbM3+Y8klKpbJc6-j0N39as)e(^ z>N`Q01{O5pKJS(Yr8s#tM>c}6fP}Xk84qf?+vh&SH`)&N@9&;|5EonHDh^7zN&Thm zoh`bkWh=SuKI(GZ2|v`B11iQ3@GYjMCkaQBPk_qabm2GF8T*j>)YzEI9Z&^cjSb)m%ssk)@2?d zSnj zg#I8@eAN1M^`2{PwFRh%kdomHX1c^H^_sfg+lmpDnb05f9#HLhv)l;DFU!Sw4qxP5 zXRhRCYNF5baPN*K-;c@J)WbDZ%?lPsEJ5i=q zaMDeXsnz$|hl>=P(KuXdSPA)dwTC$xCY4N^PNh>lT$03QBSk~bD&#&}qq^&FVN;o< zEH-yVtq#!S^k2ymviy0u#Xt0$O!mSNAO}hSIr!TVi$4Vd|4R=3(DG?Zz{rd@`XPQW z_figptF}=%rE5~hGm>Qv+R@@nw7`Qgu1fUu3ocB(0fiJc zqU{g5^ayNi&0b!|IOU1j=&>wI(b!gVv9g|L=AB_w+7b)(ZO+N-u|^$)ew}LyYl=z@ z8jcq;d#@;X!Osn%?3Oi{V86r;>trZhHfk5p6|;Pr&)evt1};d}pE+e^J%7m89jpyA zPqubC{_0{6M=bDLjE|k$+!*mq;T((?uZ#{6?Hl6$WOvEQ`wsU@d_Js$+(ejEhP8?H z4OshplLWw7K>Giz!;X#y9wH7d2G;*9W=18C+9`>l4E(G?wzZcA3NaHWAmO&w3%H?} z42^h zt8BG<8ISbfDjwO*@;Y$aAN%e!k+Hkr=i3gF4Zi?NWa37~t2Uu$-|o0d>CvcF8-B$x zIy$**OUirP`fHvTy-c;nkRQ_8tL9lq=4V$adGa~0olY&gN{!ASm8`-nWr}P;0~y=P%BZBQf1s-K8hI6+ko^iIo}>n=0k;CVG|)jHte4PZgM4(< z06F9CoT>7ZRe0%VcbTHpY8ia%ZLy}q9tN+$)B-*fPSNHx&DN@^Sxq%vAz7i*=;@N} zM`{T)MI6qJC;i-qBDEi%c9u*-r!m6+!>~kKvJPliH<`vpzsm4PTeI#h9yiu{wJY0j zr^R6$PJ)$2W1uV4@VmBX9pf+(uuaPWh{-0T6#eQ~=G2+}Xi29*40`GdMtxxaZ#u(m z6ZJeAXos+6lBo^**OfX~+YK9c{HkEVk=sN@rwgQh;qS~a)Uh04OxQgJy}23si8&i9DOuTN zHE#bkxvVccEwUD-47Imt0_^M?;TqcdsQs;)41+S0jbAxX;rwQS$CG*Ao(ElZUbN%P z79NJa7G3NI>ZDznrZoRNBB0xH{G_67&|194PIwf&@T}8LuGTquy#rM$LZ=%?kwS&n z)}5$Q{zX_O%&|MUq9DU8qHgi9FycPnyV{*BBi<*Mlg*~>?mK^>w#$v{2<7tP$SZRV zJ`<`sc%z1QA3eV2)R@~nH!t7*7{h^g;%M&vgZfp)%v0c`izgbr0crNSssYP__sGLn zLqbi<9cghM3#rwE_8*RN&WI;5gXi507e+12?GA*l=;@Vty~>6*r|8z(3=PEwWxG6S z59aH=29^rFaKpW6AuRAtshV^8lATgFI%yZb|0YN6+IReg<>KJ?-^c8}FmDt+@xm!Z zV8Kc9=0C;m3*i)^vEU?oE8i%Li*ZQPT8c|%&2SfZg!j(n2H$@3+fq1eb4I`q&a&H~ zx*g9|BkeAVk2MK5PD`u7qptRsSRBf4GWwLx5DsU&xJ1*~4Ba?oiQY-l;cx35g16ew z`Wk)a{uTEz{Y;mDW*GrdYiS<>VMn)p;SSj0FiP4@nCuR(QM@K}0sU&gB{288EST;4 zwwrB^NTKKR5>_~OX%6Hy#hevIera8b-^%mh)Tf?BAsg1@=f;g#si-*h!&P{SXZvNo zRg3kOuuC~}P9xX*I!&X9)O~HGEh|u?oOso?ee|aHH)6E3gVKcha(%OO4Adzum zzEKR~V$D_F33$h!+-@pAz0}}9VB7}4?hv>dhVtTf>Ei59LSnXAuIn)!}l;Sjr zx;Wa2Sv5a1$x1)My9_O)tJ}B=b6GwTIE{;`eSERwOL~feO?RFydjDQ(Z^h7i_9)*% zfx9wx0!#8Jef^1YCU5MFG5CREyByVjGO>UE&vW;`&7(=IxeXB@o=O4ao$3BZ5c}Ie zCM8QL0mhxaUc95O;9x*}gG!7a%g5oI0%2n4$UpNR7H~k(%2ux=nf*fg(P1T}nix`Y z7E$5j+ZIoni3?#5%SPmvL?gix=zvcb+>6K^`uN=fsAj0%_(l+>L~_<*1Z7u|B)=j!aE1~^Em%^v5_H-~5^zm9IJ}!uvl-(!N)*G02Es0hFBudVVS>4dqX>;q zQRJn$h;xQw37J5bYD+9u7K2EiM6z%^9Y>VQt%&3`=h6&%ngj6z_b4c(Mt?jN?wTU1 zRI(M>m-?Xy4l~BS3<|KMjRifhE$BmhnYtigu2*c(uX1!tFw-cBWLRs-unPVWG(aMx z#IF!YMw=IIP4=IQ@@~qeA72fAr>{GcP0I^ zs?=-t9&rhsv8i|-R`33XurA16_%oDxaORj{xK$t86?;Hl9_I?7i;yML0U}EWERR!y z<)_Ya;^nf!DD9+5(!_=}1PuYU40h65sKLYKt+__HA~fe-4M^>vsJD`avsl(&aF)c! z!413L4#}v>tReOyaT5}pg?h#-po$e6dTR>d2BOYyN^EdtXb*$)6jzJV z-OFonW0_oqWoJGQpC-vjH#FkT4J<3z2*0Rz%hr>E=Y+7nqj#fK7sJ(aWQI?1t&}%E z-xH1+cG%$aF4E$a-S#2+ZX}u!`F>FW^liIYk$Oanj-dz z_d<5`S=WQSv&qLft?ZLr-1>R#hwb#VLf@6M=~A_cbx?HLmZU1acidT}Y5wWC?t%Qi zdbXRAmBYbsdZi`E^{VE<*KtRq$sPCgPu)7dyF)yI9d45VTJ{t0vHVAE6Ed)Ob^)}7 z2soO#*qGQl|I@88iQoaW5ugMf^rt?~E*@gmUm4ht3Q~0oR_mn~V$GP*RqY7QD=Wuf+yMV%K7!pd+IVUle@B$6| zhwPN!pWgW!RqB6e+;srn_XPO<_Sn_`cDn!1cmBo}+Nf?zK&!a$Meu7cP6AHGloUKq z5`WIrl$0-jGO8E$h2^v*NWtxf6;~1+@&5Q>wO#d~#7$F>fwQ$oNYTy}rrDmBJ(!gv zjE+k~ZFUMHit%hWg<*1>C(s(D^qkDMG*8Ay3i}%M?1ek_pL&;w>WXo$wj9jgA4LQB zZOnIeRIq0ck$QAb_84Tf1>?P5Zb0|EYiCH`{BU`AS>>AX^CW-;)E-6(sXVdE%d)dCDuc$YL1p1JQNE zrV5G)AgS^Bv=A$l8iMJK`U|mS`TXMoeW0j!rnOm|ASXIjZrTDWVJEzT8#(9%4FX_c z5JR(0HVqFhCto)n#{Cx8n&|aF)O%!tMfl8@Y&JXq7o4T!!n$@U*Y-!2 z&;-n@uA`5^XROvDX~8jiXDxRW-v~dVR_Goy@6ReidK8j0JJ2mj&0SV{l*05Hrirt5+itb0F;k4g)%b zi&336=a^eLef11lQI`hy)>9~0Z3Xv^L=td^{h%hl&ePwZk_~;khL~t`s*{@2H`|%s z+s05MMXdW~)-Y!1{D#5eTVar$3o7jnSFR+eMl+~Z0tu0tHk)G}&c0HdM1=?o_kN%L ziT?&K$#~*-8at#F=zZpEcvvx2iSljT=lAK)OV`ZiXGEj`10} zIPC19&!8vTz%R&WbUTuMQ_QD5aH<>F_3w$W;5K33T>VuU)zI$DS^t_!*fBGuw+5sU zIshT*-`-&Q3#$D|jemn0piKubACBS^11QSRcd(l~QR_Pw!}{wdq-x4wVRE-kkg~8h zns9krAN&2dkx)d{-4CI-dt(RGsnO}9Q#V2Kd1EqgY@VWy;7Ns0EqYl7S><2_9Z?=qw<0R?*dUYk=Vj3(B$@^IysT!7dc-qQ9 zw%M#@nk4_7ctxV&4gkqR(-u8 z>2R6m0r5G$dqV+qYfjFnpZErHf(gI+LRcO@Ulp^tbf1idQ2P4i7^$;o>;2T;lR15& z69*RuU)t*6A2KigMAaX@fk6dngLgLe zYu|;u?NIS8N7)rCG`}QGw|XrY&M;J{=vvUmQJRk)??zj%jws_r2*`u2qb)|Zm7u=r zO<3$Tp^~Mw@Aa}B@>#|SR<)~5YcI^dF?v2EVj`C(f{MjmNgOoTzRo(V$}Y<;eIk#| z(PKEUOQng0{nUpWYrCS{Y}ax{PlC6bSmZ45ViKE5wRWs{*KSf-V=t+Rrj;%ql-Mx@ zF3-6tYT+n>^iwmIbr&Lvt&O|_2aC5t-jU8kWIRr%lfc9je)scUY0{Nv?S<;Wh2}&E zpT@IfdVxiewH;Hs-@h7De-}@J$j#fK0K$t0sKYV*XV=5d#@@iu3x48AUs1us|4Ww7&JcGwoRV9#MVJf5w<_U0!*cR6U;_ zTOzxdl|Tv;AfF);FA`ks>hK<7fKA93-TFM1$NeDk!swq>Xmvp~34`y;9w;r;BFP3- za4h}fPSX#ptl5|-3a5Lj$WnSSbJC4j+&c4elW)S_>sfozpCs|4#<%DBGzV%aXAYvr z;G1ECYfed-&mNr6yFb%1pO$b~HO{y_#h`!1l3{}m*LMHoFk1su8SNyl)z+~ucjEN5 zEISJ4`d2q<_ulel7`-iVrOlJ+3&F}fZ4U(Y!5O*Of=aAbK?vT1q@|abs9(>Zbtho& z{JaW{eKs_gKGjmbtks|iJ2LOX=+%)Z2i^u58-}}~JHUfu6L0iGe)}~2MgDgf{aAD$ z3aZAD)f_6+(w1t?jr}c{^N!_NgPG!2bgp!RH{@8x|PqF%qhf#4dayx)|z>6nTw4yG;D5B0%#d;)reqdEi zU^h3z8ULrA9p&oKk4{^q{MzN-iQ${&8{UhdgaBZ;O`<}##y7=m=9j6tJE&FB8$;4> zVFHVE;9(gHd1o`G;y7NS@S2{dkoG~pwt4^)ro`YHNRTy?2tQa;R!-1t%X4B&6jLM= zNSNstk%iBx`D&@KZx#5}JW%RLChBslc}39NRfSEAT;!~$mo}_YU1zK9e|>dGt$Xhw zH*WRBoyu(Bw-d~HiC=)9SiZUWX>6HSnvEis_04#Zv`b9kYgV6YkYFsBh=ZJ}(6@-3 zkoNDsbLFhTAtzF)LQI)ic$s)?gLhjBOg6{8rk+eI&yfyp0m&QN-Oy|NFC#%`!$L%K zVjhhOd}3Ajd}@8xT+3vUf}+I%UOFk@ClcpVN-Zb-Bp?urOuRZB=Wi)1M51CC`gL)7 zi4f!kl@b-d_V~sI!N(5d{eXBQ{!$uARzj-S0q_eO&>QogOC$f}nX=sqDZ2(iwBBUz|I333_vkMN)V^b_Wo&I8j`?-YY= z5~Fnt-b-tzEe{z^7w7vIKkfrg4MGt*5Q~aT!VCsfd?#R}72ewoFwcQ|#ans&Ylo-eR9Q{LV@ZXlNQuMMaR_f2 z0@rNvCSqx|YgK49_G+O}u$ShgW0-_N5_iF4ynK|Fw_4NH8Zp3^RS^0agtYAtvl2SU zj6n0CNa75|A0_QP)|hlk89NHChcSAag+=7#Cz;pom=kh7Xb=OG_g&T)B|CqqFVj0~ zl^w%XwY8w)m$d}jJZ0kY5-r-}_LkCk1Z$v$_(=7jv=$#jyDcw#i(4)wTlS0qfm9(QW9<+@ElNF+*APa@d{;KI7ojW0A(o z%6E#G+6Xr8PtWxT>l6%~r4u0%I5AnKoW{x3P<)uKFzw8Hp!RXm4;sk%B!FM}>D{u+ z%+mq*gs*Qquwte){n{Tda9YaCM`kZ25Ka;A#^rN3B5cVRKFLplnVKR~U*Zy9p$nkO z;Hj>L4kb~=5K+a{zPm!i@B5#SMWc5^icbyV@kw97ZCOp$3d_@;!b%=qQdO~sm}5_V z6bOW}+5h|?tiX16{Axzn&b0=2Hx(3qpw7J|$g?kaoi~`HPlSU;50(90w{;^jn-tf5 zZ!+`GMTp-B7nm4cF#tfgAAkVvKNpbxr7geV%|}TlW)9Hq{-BncH6wCd*=(O`0`?6C z2?R+itS;S?(;y9=bmEiX%Z3AA;R;X~PU)O4;77vN4!YU@f%i4MknanHPIp;b+d}oj zGhnplK042W=_OUv+=&@V@YY8drnX@baT9a=>luHnju_&jco&KduwSb0JwEoMF>{M> zL-i_}2)|EHR@Y!>qf^x~JEbH09GV6`WucA&2DbMul&f$VF=-{A{LC~c>-t&aSD4AR zMKh`B2d1cM6vC!}>9021p=ko}sqterAflG9J|MRV!!9X{>|;JRm({@^+le@@bo{EJ z`;pT247snZSiafPa}pm=>{9AprB*;^A-k9~*erSSA#kSJ$Q(<(WcGnv5$;smwAhXbbjUm5MM_1=CgAMVZCh%w zR*Glj1%SX=#BoTyg?IwVYIZ7)fKWHoFAT74MK}vxTa6;+ zK5KGh+rkox-LctCRFQkdq%DEg6)cf_qT3&}Q>h$ZFxW+`UZnVXr^+*;U-@nDv#N*|y-ZFUS3Fq%d4v^pm(cpADcQ-V@jLa??;=oT=KmFv)Yy`QZ$S>?)7|Z zve9_q5s>M(w5-kgykyM!c=^6RUw`i6PR1ydDa&b;ISZnbQDMukhFw=&(YBN^SURq? z5U<1r;OCa_)8!s%*;aiJA^x))`bhdKs+!iSc`>TRk!W7M`n6GOiE3cMP4av2f@W?X z!##X91rcmX9(3NJ$>Bx{^MS4bMr{YSieg#%Ktcm5_$w z+g8W6ZGU&~v(MSj+3)z?XOHpz$p1Unsx_2qG(GcC(QJemnF1!1v>; zg-va6As7kmrPPAO{?-xtZP)2N>j|VrCDrz|q>zvbElzUol;aY4}<#S${7MC&JMB%6G5>r$$0OR!MVa$U(gO&KCj!O?VS7UR1EG{t|?(XH4@(+c0crm zVu&)Cg_+n;^^$jZL_1om+RJIpZkm8GD;PB zPs zeqfx;>m}$KCe{tLMq*CY@ONF&Q5pR-g~$b>osY$??wQ@}UXK%(dZXclbI8r9GU(OU zFZ0#l=eXeUO=p5<8cm5|(;&KF<@}>q&_HWBHNQ0d7f?}tPyrRniC#^;jvd%QKZ?Xh zaYxh}$82r$6U>@Hk{TnJ;;ze^m*Ayv<17$i0}=xuq}1mK58c+uuN>c4Y+eSv1PWzd*fnRGkg)zGdn zj;4Dsc6{dZ9#uqkG(gzszNUK0U%t7u#r?X(f~ZQ5lLRr3h87PXUD&k2SUPOM=X7-iPMRUxwcP2$mAL7w2n$Q>Fu)INyJK z+QM#54*E*&b^tGC6I%y>5b{4p%ib|)w&V!MTe_yQk8Uk9g!LvN`u64M)SgdJ5LI{epTHi;~V%L=g(Q&B_75@>QdcO)C~} z0vPmdc8wMlGGGCCZv?Ps%nlxX@HW0o!AM5JGiRIux_{B^Klg;oJ;C}N@WlcFUyk?x z?aTeSJIc{D3V?aJ;K#LnT;@XDSv+W9V*0x%9ANja1IkDZjfwH7X4`JA>DBc*RvA2> zS@o-E)j_5ym7{%TaxJi2XOGd-p`3M)Y+;3K6QrqV^|53mfZc> z@x*&XfQVrs^K~N*rhBnD!^2L}YpF<`OmQHDLO9;aETW!eg>=E0S>pG+AkiV~;=JAHHZZnkhjP}2@3>jLIy^77gpnfHF_&=oG}ka6_u zFqf$lO%IUcA+N1$6;Tspz1lq)U|%wpPEcx1%k(3QRIgbq6e!$pWDM`SFIw{Z{`IBu zPu?X^0f)*0QIW4G-*|ou5zj z@OpR=Fmp-Ts%c3dT4Iu@g?o)9m==oh9s#RS9*gDdmI5rf0QWu#Uo^TE=cWpQtNi8(Yg6-3#V0846@4)2Y5PetrKjod6?r_CYZzV9m zaJzB^EP{-ATDr!&@tmwLyWUj1xaWta&zrHa4MGTKC}L`%dr@kKW5%5d>rjL3NHxO@ zzYL)`5h9A>zjz|_(hCZ)1op*Hyl=uHsWU@xSX)JxrD-JxopHdak;}AM> zN7+k}WAurqip>?2Vfs$3=IY5=tj$=<@0X$V31xTWe0NUcRM38K)Qr2B$@0$6IEkW) zOnnqEMU^7tw*wz#jAux{9d2qQ@2B_tH5nxbU4oK!`)?E3!hMLBq@}(XIIb=MqLz=Qp6A`zuJnQ%4l|3rsu?FW(B7pW^ z@1~v24M??kzoGk93T7!(?#JG5b9A%cC{qSjYsO>Fb-6K~$8s)>Eh@VR=Jz?1ymNp!1qp zEV++OIyvcZ+x}yq{c2N9*8heORX8rbd;olW0)qYTQ|_36nK2f zBC%Cw>1=WoNO`zKEPJybl60r{{TnVFmgiA<0`r%X9E}kHOLJ}??VH$B%jW)yUiK4o zRb%0?C75Wp&z@H49>34B(~YZclQQ77Pa9{y{&X!!{%)W)=1=gbfSrOZU=Em#$?Z|>z(?pbhH8Jh+svK*+1UP5VN-Ta4&~!Qr~*OffdC+sKu{n~0JK|ntXchTe9Q>Wt;JFl;?_ECqM1I*`7c!YJ=8h<)8N%wI{5Y?6QLywiv)2DU9rUL6%u&bmMvTAXp(fmxX z+DSS>Y#?)-EZJ#X16h7(GhgfB?!7a^UT9a^gf4Z4J_7E= z{>C$0CPs(Rhp!@?z%o5MtG*P6PaF?xX!ydgok)3*fV&p|l~NRgGxGTk0etsYj43 zbsvgX4i{&3{clK<+Z+1*$I9p!@c8f_K-zyt`5#F8sn}!l$IJ+OnAa|u)*PB_!Z?IF zB#opfBgFEop z6_=Q2uIi?vYyw@u0t;yj494H3un^HPX=~obPZc-;cS`P}U z{Fm_LWnNY$5Us*f&N`>K_AWO16FL* zirv3Adpuw(8_+g3L8nED^|S)l;sU;YoLKzOeHXm^QgMe{mNxxUT+IX@l}kVLKro9<#f?KV8=6V^A z&KxJ!Tg5y%C29Ee?1_6PgtO(NKHMH0-54daAI88J*ixC zzJTuNJ`bR|NXt~NO%L~nh6$jF5k8)XIs2CF579RaE~(@w+RGGv?BWR(wuvmU zdE}W(Ga6w7jXa=JjTi^$*K(BTr|5+~K+9B`o-^flVGLK6H6VaIB~ch}HzvrhC09do5o~W3&g9<*O2tH16RBq>$-11@_&bkyPPY>ABEdv_ zTI()ihV3w9!WaO{9={~YqQEGwXP8;k*`!E>9cs^2Kf+EiO0dw42ED{I;dCw*CpIr8 z6@xZyr+BSG{bnDk*Uq}}7!jT?2#dJjfP3`Mw8yV=lI_j*1Bn>e8_22KRpG1?QYLd)>Oq-M){Bt z`(-4i2?3kjC?;96rvi96gF>OEAji=7j?(XuMk2__oRY(YEa`pSqx#AB3Vas?t|h5x zz36Z(sXa#K>u>qYt99XMf+awkxGy-#UiZkex$(;BdHHrdRj2z!${<<)H$C)7ZERcB zvWUW*_5ANdh1&9^mRt*skpghk0wZxf7~P^%Y1`Bw3HAB&??Vo>9eG|kB$DAeVjCkD z#q6FgJ}mDRX9+p0;f0!#o{c5tyerD8ch-F*4JJo*aG53~Or<3h-_9k!X)2gvPIeMO zKCQer{VYfLgG;bDMPzo;ywzliDUf*L>j*j*Jm(7+hTheR@I1|7{DFT9`?$)e>HA6J^GV7bZOt}H zpulxwF304A1?0b2md)}T2lu;to>VW?{Y)tSCF30)rK0da{^+)QRjki=G$)LozlCk9 zv`fNpAB&~RS6SR0Kf-rrt!APUU1=dAGwQ#UA!`G?Hn2_q2{CmYaRt_}}wJpZq zk`-wzoeT{8!4B-dYQ`Qc69*zQE77Dat;X!r0Ue4gsz*NaOu}Jy9+Vsd z1QCCS6Rb6kO>08%01URvyS?KBY?KX#*=+_}8}Fj`V`0&LB*-IV?FxJS8UwtH=z)op zYsm_xwk>!`+IPjaIka{=m>K8wntQ0dG_cx1OUfyYn+fqulM`{-Gsj4J4Q+Gu%8Y;=4WhJ7SR)5bp8Ur*7vsr;H~y z8{%J8aO3WQ;u=g1k8gtomJA<2+%=Sqp*ajdAfAV*GG+9Y1TOB`~Tn+_i+dL4))+0EU!Jz_iD zFz?s%ogT`qrKt|{CWB=XHw#at*^+#l28qd4u857ZkMLR=afxY$bks>_Tz_e#Ff5V_ zvBZRLn|C1vn-B z|9W8lJ3Rg=8#9!o|8%Bz9I8_D$c4xuOFXACXSe`?n~1T;G$!kycp5@mjfgn_(L7&j zuS&!qE1Hx>7$2W|z7}vVop$3z8hzxurDI(6(Rv*{%IZ`1dD@T!Dqsv01;t7vPmA|{ z-;)>&H|AT76o#;xbQ>+C5FjK{(nA6XpqwKxou7KL09xb{%3&Z#3XmZ)-R6!!%nuJJ zUw~>RAnutZFeH_dJLWIytJ9)X>_JKjf@*-Il?w?!43=at16?!VDC1Y8-2pQxxK|z! z4(^S#EI}{egd*LFV?!~e_|y&-ZgOXkc8Aa(tq&dx@h`x-n#m4jwzBhXP1(>l;{j$U zRMRmVt)`EJ_I@@)N#ojg`(~mbpN`VU)2wk-H1}1bWyjG3p`K6a$ znQ-?~6`eltQB?GBh)lEyKl=53x9($kWchjfKD$Q|`FCZHzkF$)pK_^SS-=f;D6KoN z3udX89De*xcuu=Ii(8>W;V{T=VJ+m^X@oAx;%O9#->qw0pi=q`kGKWziP~wiS~n26 zt&?oAopb09%`0uGllI*=>7%SUlrL0Bo5Aapu9EP6vt5HL-A4EJ!qn3UOvWcUF~L6G zW9kKQHXedg0htXO?G{Y6$CO{CFRlD4PF7~^L#Mh$zfkK<21i;|h8UvwfDho89HeF?Up#$mdyTFXF8U^A#r%c(>%At`LVyZEUcvr4no zDRer2VPoCmF0;{km4V*u*#5Aof7F@5k-8W|pAl&kX#I`N%3Jv7G7Pj$+@PElF;eqV z^(|}N>nE{(!v+>?=HuA1_3fvHo0=jyb0Bkha*E|J0`!v9iAJ1!~t+Hd4eAVX6ik1&1q6LK|LcdQa01G@YSPqcDpM-p(~L7 zyiK0tKY{xM8Ba-(FnldtTU$N8aC~vv%zS%#-^c!8zh;W@y~1CMdA=x>-gp9GjS)qg zmQrASPenX)lY+{_TpKyfyb}7`m%-|0g@}|IsC^>V{!-`^jb#NFRCU!z|F>+daeJ!o z84lj56sFAu6s->eBgb3=)2=}BUwDEi^L~6~md}@2{*^H@t>b`Hm#@wAb4b!0tnp0O z?e1i8YH=1kxX={p{+B5P>xt3Tp*7`b>MV@36q8msOW}7919dQ4<|No0TzyC%r@-lO z#fhtIsz8>-6aA|&>56`Ws<*{)YwfmhodcM!tRZZz7D3$O*7nNz2C~JU9`;|;4b4W< zjIp#9j0sDQ5x^Ko^uP4|uE>QdeY%vQ1gI0NC$$V>?m7xIG((G0!5_tQqlF4eG&)EQ zD`D2qSRG6WnUuOBYN_(SXe>Q8&`{$MM8VCsIcEss8bi;mZKnGo7hDc<6>7j#gUC^P zF^tkq9dK_hrDTM3YGPF}xkh>jDrZXj{hNCbPzuu|Ezzuv2#!c>mgTTy_nNOXp*^VYgu}yO@8M* zO~4MFEI0~2=U{sMoU4XW?C zJOZ~`CexH`aLy)u2=u;^jYGF?eGTk1i0pY3MfQmBeDnkT7{{rPO|ajtoF`X5${5+h zZi?`6W?9&jHSvJk}y`#pvh<6o`PTN44vOv3G|b_BX)l+h6e;sua5J$>9E$y^3)2*obNyVj#6(nLb?ICp04bvY*xduV0AX~Nq@$O5WuJ;YJica`` z-+SmX-S_rJdBT6 z9&qw-@B0YmqTw%t?E;ad_JocNLi6BT-PiH84_SlK-aVddvtJa1*zuLs;AUC*f!;Q7 z0J+F9663ppC{r;{4pZNCx@&vPEdfLr1`FH30dJktMxDdNadA_10$1Wvh%FMQuF|)v zM~~OnwlJylV9_Gjsp-9azI${8>$Js@|AsG#PZolMi?z5=8d;;CqPVu?R=ud*$_@|C zDn^!D>SoQ_-f<0qzl#X%y6Fm(r-*Sc((BCSVSk15{%?eCCtc<@5&()Z0L^vee;YC) z=Kpe@T2(*>SPmcqVJAUg@FReL+O`x^ZF~=PKtv5_B1l4`i=V&{VQsT#vQ&Qo{_xk` zilEcLYFAR{dEOFLf3Q+0Cd{T|>X@55bjr%yz~|-l1*P|EgW1j0tsTvLSEHPYt3>J? z!z~+6?4W!r{Z6-@3$Ts<_INm8-i4A7REBo?Na`5rY$@)2I0bGnDbJ0g8FLXS!sLy>uO>V}80#N?l^A!_zv-kEXs$?wDtHJtZ0D zypuf46ejFv3xkuCglZ{8@W-Brt3^rmw$b-?HzbHfG@2`HYoa&%v$>~NO_b`5v4H#q!CAtDTYenz zd?_4()Vsq*sODQ&SFBw6U&8VY-s%XFczt4wN*;;H*1AfG-_c(v!&C8GEV5hLQ}{T9 zrG3Zq$ubETGXx#Df{|036%aY{XztcRh3_+a&0$@G32SSS`q(M0jfFKibaj<*Y$D7< zC^=Svo_vb|eY%BGk=sP}kwpf-OhPHDE(%J-8Y5E%(kD+D`?gFNF`EV07oc^KrcnB3 zk_K!k0WJyE(?Mm;lhev?=Xw|`T%r1_<%cS$uJeqpKpwp_>Q&@UW87&6Npp9zT6D)j zIb>wo_Qd4qftzf{<707S%3JZ)2OZr_16bLmKxuEk`EEM7 zpBzLP&;DVrmTZ}9>V4|c32a%v%D0icznPeo=zkzPAg)AI-{PVCLZRX7|41i)jz}@QU}nx4u7|RjC_*JCG6SZk-HQSA^)&yi)Wj5>s0a5Xu*8^0_qEq~Zxa;xE zC@@xM9-{=d5BLJ#gF71L-ASW@_MxU~G(NWE%xVrtgRK|S?oAGjM)P%7d}cH0DK<|e zDgw)NM5LU1UwCWx^bjQG#2ki^(8zGDgnkD0(qEhc<{vu9&f7pde&wuIb@HsgJp{#A zlgoli3$$>|n|Cav4FSod3=_!G`vZR`vHBQz-lGij?j7`%zUDhnYtA82l4%C%oxK}? zWETZnHRuK@usBaHw8>69v=dy36=fnvKG?y<8`D1mv#MRGJinPangNV9K+|kugY`mt zj7W%#Z63;|}fgLrQDF z>p6SLxfpvLO>B-t*@W=iGsUc8ibS%=o+gTk z_upL4iDx&!%mI+|XSRXiZ&UfdMcF^zu3|MMN%&!cHeXe7yez!UJi%R*M8NrlLFlR* zJ55UsWh z(K8s;L=cLKpDvh~BYT8p#Do-PYJgP?b7-&)B50uPeIu@W3Vf<>S=0L7+!!plBSG;h zJQMF;7=>6+_ExOCoGs|5wNH`uO)?cV=-xXaGK*4vS#7;e&EeruLrV8mf4khzJ^_g~ zNc^j-!!=_Jr%iVkV+hOfqnB(g9=pxKt?%fXP=$aqjwc-Zb{^OV3MjKj4OI}a@hIh! z(LAXZ4DM{8S>yikT zN0I~e6w7>5tcypJ0pjY-g8sM_V^i~DP)SYHEsZ-ZZ*AZ$!BH!uBAp9AN8oyEKR2xalG{ML`gTFf;0nR<| zb_M>F7isGn^CNDh@51x7gLU(@e%(Eo_=ypVO}@($p@!-Jy{}R>`o5rULh~S z%&;dOq|7hgElTh~yS1ywM^4*kibsJ;psIopGOiub9J42%4s~0X$-}z$-o?gsM)7lJ zVG?(8-hL_P;C1NQy)F6#wAj5EWAgFHPl5{~vjpb*P!Ws!*7pRzj$shnm!6m1I$N0K zV5M1R%+dKEmeYm}$_2X-VK8^FA(*|;?QLJHsd4?EOlR6}5YDDD?rdl-I^y)bKG)Xd1u z89O&Sgc6RsUew^AK`Z`pO_ga1=jD4-6mu!|4Q{ZHn9(eDzY+$8bvN{;VxX*v){+~n zsccAImn%M}+dBVm1S|oj#RmX;%dY2#z&V)8`8rc)jHF1>7-X3MGJdg6nK%xlc@HE{*gEF+#Q0pne zntmA~B;s#GWm_+SXWs_YCM&#zCZ9pb-k<4!FMj`sz+Otls6M;kJu~Jo43XK@K}!Dj z23SG&js!CR7#INp>+g*+{u)&Og#^;Fdw@Q^f6O`c<|y@D75E_{i9tZR6cpG!<`=^5 zF)QqiGL!suz@^_^A0QJN_^Bq6Yg6Kf;d(rJqRiRwmbcgGaUZ}mNfrNS?Q@d{ z?tmU3J>3+D=9<*~J+|*_TpF*!FU$oR9;dJRBZ492E-pUWhc~w_Gka3Mau) z%sIMYMc^bk>*rm4o{7KIjDLWDT-gf>7*H>c17xwkKQnO~M<;z7Lt|N!|DJS`R0J@x z4^l`gHGjTd;u|^n93ZqZpb&!QMER?cth6Fkb(d zlM^N*1Y=U8^$;<(GOx2lDr#*)vCujkXFw5F{Mb3zjAEPobO$Pl9+6BU?EvJ@AR5+k>? zkoDZ%WI1VPvQ1|H$%oaT`9}ohq~WiG8CdywnqW6#MX-i`?!NC4UK9ElQqM$IC#Ze< znbQYvOO4r*H^OJ!HUmoK z6PViwK`S=m&E}Pcs0bZH%(-;`Y{S*B<(w9O0CLZq#mm*6ILo1me~--6eu3I0tl;Jc z=@0|zL{-ut;S}-QGAFYPJ5x*mB|+dvXE>_d<<31a-|6?N_rj$~dH1^*C%ZGUWK-=M z<|L1O3=QOcVh3Lu@jfG=B~%u*c&Lf5FN`fw^^rMZG$eV2&6|3lM_aULrX;jz7FT&= zq4_T5-6I7d>k_>cdA1v=hvw*vGan7B_p6Xy>5@!}dzky>-_}5a_LZpB10WCvaHal! zZtySH=^sQa_8*SE!jCWECFp($KvG(L(Y@l~1pHrt?dyu?xP^ayBlUvV8#dG4+vN0M zj*V~-o`AXJ&hz}k!`7Z(RHu!FV@hFov~_6pPv;{@;YT^4IBbVQmZB~wadY50VP=7J zE2t6n_$`PX1E!mSfaQYtFswkjE_oW$aJkHaXmj-vBS=aLJYv83!xvO{Bu_`-vzrGd z=2ODhXOOHc@E~y21x@RC4P_V13@w~>tcEMimi~zC=N3VAl3r=MciXBOvnI!mh-&PB zEF*D_$FAVR#3Z)TA~{Ckx%ldf)JoLLD_e0N` z441fwBVZ$P*dqExk_dSjJ~E0UvI%TX5PvFtL@Wq`J&@d9?7c?QjqzSG8J*517xu`N zj@PS~J)qSDI>IpyGpHT#fx))xoszVgvhuV3!IfEr`XBj`4~1~5#4iKEcZBI zcnql}8h+u=HCq?%&W2JodzsM-G@CGIEbsF(MmwA$e0fzfEA~@JJyiyn3Nrjw4Q!`e z45RNwse-;zJ9`CeUq)*z)&q~#U?8p94l%hH@0dG#m?*LLWTweuTiwS1Q1!_<@Pxe|M*bjaYpZn=9(s6^vQ>#8 zPnVG$A`ZDYj76CznJ*TFewnXcwrgfYH`yw-PZX{oHK2QV$lwsbUM(StAzk%Yz@;Idjm zUZ_1vS&Ic~a~+fgS9z3Z%>QOui)cx0+FgIFHzgn?WsX%kxgPh>zCVRHm??auU5Yi{ zM!cMy(50OIQZ@=ToZ?4@`}(AfGF*h*Mrcg(ZK57Ljj4BFn&`Z+>#&$5*mg0?KFoFQ zc(2cj1#gNpzAoZ1@A~=9i+vLt)*jwJ$+y2RSZiu1CE{J&dq@H9#;d3kMg`xNmD&J% zgDi4Xq@~AuLj`W3*5}*Qeok`r1Crg|)ALbRy9xtG;g5BW3$}ZivGzQxdYVstZszLd z{v+5ch4#O!sr*Ng6##$yhiyRvVBzoQA^#lQU#ZrN4S;HK14C;zRuC8@<|?nQ_=~W1 zqWQyPAj1%fG;-ZpOOVmGjx)CjBEO?;dd~=DNkv`*zrpb4UtiE7$Sb^7dtPpM9;AC- zoK4-@@_ym!;pxkS3%*c;-w?~wE{TLdd0b~;4TyyhXd>>N#-FcVu&_+b5F7-5(!?cEba@;~bj!;x$ z3)5}FZrYUCa{)}t`|64cN|#)6&RmbUWQVfytG!AtR^Nj_72BnD(FWYU%-UGI$Je%+ z9dET}zqH@ccbN)C0Nv&GR?CWpLVBPPoiesxh8js(LP({jf?`=RJT_g?9e(xY3)TBI z9q{DZkAT&sR4lQj4Bw?OCsIs~pB-$KZ(#r8?|-CTy-r$gV*nIr0HW&eyM_NJqW%j9 zCS(DQy?_A-s!TS_e5`n(1WF2lT=e{DiGh6{b@+#*_iB?NdEWld4QU(_KAhH~W!Ac` zM-@j8g)NXp`zM;lQ`7?X!SYJp9hOwlGDK1^)HclT5-UGhI;1g3T>b$AjAoJxGlL9+ z)3tn_!LI-*l(s z@`O<93ilv*TKsctq>8))+6M*tvTKwC!cFt>4yPIfID^ zEv;=cs17+Db&`8|kLixkc~HU%DH9RA_Cv1d_{KN1X(!mN`4-MAO-(aX+)YeA-wqcy zzi16=2Y*{NKgDf(t{}8tugiuV9DFWYs~0Be*|-T^On#sZS}@AE)q* z(xcMkCjrGu$1Dr*D(=U@_2%Ze%ZG+3#;)}8VWDk502smwl!Kea;gkkpp!aukc&}{N z42pqEqRTOp2&PAR>6^YhwdHZY)0qRn)m2Wu(`wFdG-s-DdwO9h0zg5xdMjkX@ zYI~i@)@~H)p1tQpsR{SEX>oB%vcb>dhqy=1As7zV*Po3Suz=K2Xvi!yZ^DL7WV_mN z+KNMULaQ&%e*zP>FoW86RyHBlKx4#Ceqg}zh(C&%>>|w3&vj3Li8F96E>4V^WPJ}? zR{(Za8f^KCxa;dGRSKI*v8Y>#+S$Msj$c(uOP-gdlNuDzFrBz&r|36jb! zL1#+F^!JUJ*CCU%?e-}NK7HX|k6c*Tl&vH-dSrfVJUQ(oDega~C3EvjafWCMOxvzw z1m--yxZt$ihCgI$Z1kRkFs~8TwtUJ>KPgnOL<4+WaaQCnqh=)M@-bc7URgWTP9wgdwU< zuXuJ2rw8QSOlO^G0{0wiy?{aR6z_eNI0E8a@!8akN!Km>`3>6Wf~T)nk^18-b>1xF zA>j&b18glG$oMI45*Y>P$Txu`FP~l927^|CATt8UTgqG1PF!}Yk0J(9l~I&xBFna! ze`VB~=o9(?dMY-0t4K~Lj35`}*?lp37&xsck#q{2D!4m|7^3Kraml#-Fu?p`9drd< z{Dz0;>Z|igVwygXmKTzQwHrZ0M7;vj>tI@bMScl-vxt!|bB)IjSk&dOjd0bt!IH4u zsAdHl58E~`HRI%=ya>L5_RcT3*N0CD+u}ShY_~|+7FdZ&)6EiC)hI2{90f+_%L{=UiS{{Wgl=^;^B({_a( z#YgnSmu)8pRvVS$x99hg^(B&gB0RlSL!)#-yR@a)^Xb}>Pj50-w7KpDE)p59$w%+Q zgS%)>I~ZN1)&(LBjVm{JKt4^TS9udx1Jx2Q8{n#wNLzDiL;+K%AeunRHtrPwX*3`* zxy2xiC$y-R1c~5a$VM9&b7Kww?~%v4gDlt-$MiKo^q-B*N>J*I*&|jzBOAZ@X5r{L z&3+V0qP)^eZ2u(itoYl1U`KUwVQtDUiFzCB=Y6zo#-%NUK)R_siP0V}`DD4ALqh&F zZIQBZ9Rsb~Wuba1Qrh!KJqh`)Gn07jGjj0y20z)vLCsdTp$W`hCJ9!bJth`{d?ciV zW%i4cfO1R{q zgBnAG9<{zbVCmP_ehCphs8{?1%bh14tX{I_X0EnYwpTU`E!}ioUD!!F@I&|}S{X>W zklyAAHLVV7^#x4gMv)V!2uAMJuxkx@Pj_lL?IezA*G6&Yw9udS(lRbcSvl&CRjQa> zHjtVWhyn--;{MVV{!qLSK$P*qXkbqU^1(f(Ce<5vI1TSS<*_t57*#H%EeZ^bkjAUn zwv4_)HvDQ*IOIQnf0>1yugZWr^{xptV}oU!Okkx>GLMbBx?CZ2RL7c>4#D+GD-|_6 zZCFH;$fKf6f0N(1B&GVT5qQKWdrY6(*-)xgpXRX zX<#>N{kaR%Uie^fd)sqvMoE2Sl@+d?OQy>_@i%|XiIKNxV$;+fYe50Q#)=h%t;Dj~ zl47QhFAJuO4f!s#fC5&+gfngshM`cA4a7in6w3_GOfjFxPr0|CrVsRLz9c5j<&wVq z|pwnqK_(&x2pgTSlfWVzfaNs%*+7mD_aMBCtHXAQbV<)|LHnw zF2&4(28G9ujc!TBUyc%yzSY7NH!qF0FyEW^58GMN4`!A=dM_BJ=)-e3y(k|21FuSn zqG(b!<5Gf7gE9%YRs>&#)oArFm&|}$$WVH=tDwYvO4YV^ekZYMQkcyWdrD;6rBtfR z3X&rPkx!aBunJEHNJ-pDtFABlTq!oG!l213V-#;-)DY$elR9H7YGIHxLInNyu;CEe zcUU3y3utlw1|5@ht~@t@e_jtzRsKD6{2w3S4|GUJbIbMtoXQ^KZ}7`y#6v6xdb@%A zLBpgf`p>l1`u95b+6Z|1eGlWDipf^1-gzGMtMuTf2z{X84TD#h?OeGw1hL2a*?&Ot zK)X7^#U;($4nyV!@=x=N<34~qg;~|qfz(}!6GVfg^aD26Hkj#7T@40%5ov3|QRb%D z5kN4SHRUkB*6z+&ge*sr9Ooz`8lVRlJ(0sq@Mno((0o$YYkD(a&0yvvIJaSzzwDYv z)i}*@hMV%{d$7LdriQ&}E0(aiCc&0pL8m&LHoggvLL@c$buvEl^w41WP=S7{?4y_S zVRRSqwEiva_o;k>|F1Id56x?Vkw66plzFp&T@3&6Cv=o^Ft>3s{$~g^s8}lkCRTiG zAeNcMbMpDzORTNrS!1eIES34{3kC`cDOeyHHS8fJYnjhXSXftloYSvaub^M%eJGGQ zcYg!?S9CMm)PW%rVpCY89yYiiTMoGn*$+3a4mZ2r;kJ+{fz%hNuvcx4b7-{tT=MtX zP3D(aj7tpMop)X6)oqFo>efSd(#QcJa%?mlbN9pJ z?ug?9(SXqx0`09eSOkrHtAQA2^jeNn?Qk$$bui+#5FRIKJjh<8r8IsXXF6}J*J(2^nW-J$cxrYOk)vx&bVm*b zB9NklQp8?pnumcTmfE0kZ!b#VSD@PGWa|lJN{=K6kq1PK8_C%m1>HY9L`RfvpcOhJ9U?+=5t;*TeG@l(v07C ze6nov2u*a$s6z4ccz0yt!#F`CG5lu-m!zNHJGXm<#N%4Ykiwf#>^>LrI4oY^FN+vS zC4FAa!<_wOk-k?3Efwqe#gxcks^0@Dxsr>>7z>Y&0<_hN1JPIZIQRy^xNdgZed#|` z7*0V?WAEVi-$4$p&2h4}nD8WqSX~#2oQIE}vCvR1IKGC=^Y!I+kIxLb_c-U9bKYY| z=bO^oP= z+qym6F*+UFHak|wwr$(CZL?$Bwr$(&Bpv%#z0bM#?sLB}zJ147_0~U?jH>ajcdiHX znUg~wI&--lv)NRMRl`Wj=6)ZsE0QRrePMKC1s;74t}JhldY`KB2|DQ;qLCY{je<7Z z1L!?xg(J{p6;?l6+h@CIxdFbVw}YZy@8-^7>O?z9eVe{}6G!Fv8Np07?G(R($L4R~ zaa*#;?_gia!kt$cjQaOI&wYLlsn`O2{&o+*5tvn-wQ?n~n5|OpDB$nNUm%0Y^`3ru z%eDa*>8*9KMx$ukm!v5P)`6ZRYj&~h?~#jQTVtP|%K9PYN)2TS=`(j;L? zL&%E1x1(DSE=DX~FiO6OOU7Ke)CIx4m91*H4nJo4M>D+(Gw?4U-xRXI1-WN14(7*D z_2AnHpbyitcut|JFpAuyOLt{>Ufthf5?N>Zn5=j3pQX_5+@py^?XNj#l2*e(bF1_z zNYyAZcIJ0VX`-z3`loNgyZTL=5a!46#IEyEG9r5ib8@mJ;6!!sR)yv9B9#+V{NVF% zT6#OKas4gB*q*W^6)bVfQ&epi1I87l(Gp{$sw{6>+_og`RGD=~*;QB>5^Cfr;;|y* zo@znUA>J0`&YLLy3A~+zFXybDX=A2207EK^@0{d~C)<%soUx(tVAA>dxAM`Ss7|jK z9)uVW)g=S?lK)Jx{WmoKH?I6a=1E043&5y{H|qfpwi~&<#zIXBUwx9*CU_7iIMhWU zUATR1<4AnmfwSIS_m$zW7&e&^Jv!2mYFGQ!>s?ks#yBYL?p88ZaUIu}1d0xfsI9(* zu|{ar0_NUQA(V<+2B&N)xWf80B(ND1f@H`&F>)GI%-ru1j_~$@zE#({D))vj^dVvK zrd;;?tzzN?%Y*_owEIE=gGsrVL`-yovFsc?xWoa1D1}Zy-tZ9B{&Svr6PPJThy726 z4IkYRg8rJwbGdMDjP9q37>UgL^BD8NFOrVI?u)wAiK9~_aXO@&5{nv@{pk6KA5qZ# zFanuO5ufzsWAU=@F1wO%aK7amtDcRv~QTiy!mc6j97ND zdQT^HWxPmS&tcSS57u98A*?{Ea*4uTyy+!0{MlfWzZNvl0c`~UWTRSp=WeiRWKCYAN_Gt!NTLEfYO z)063QfTTEEkhf&>B-_7TVZ-NqO)T34q2slU5l&4~p213X zwlej`FGH8aMNul#O%g@Cz&KH~O>V6u|05l5aI&KeL_C;X1^tWnK_Qn`Y`FR^^GC-*XX`jS&m$O41Uis_k6mvZS`6lq?&2 zzCL1o7=&qId&0;FSeMG7sPFxfoN2@IxSA~C#PYEE>Afn{!FFLB>eL*w)M8DpQYwmF z6$zz5EInkogwf-v4(d!Y*hr=HRo?@HRx9SdNi=ag;ILwAeTC`I;y~%6nOkA%8hixp zx74`B;lvpvw00r-+UB--*bNpOHx+{Jt}NA$8cqNmu6?{vqf|eURc&2%_XXJ<{7$$j z(=V5<7~{>ZQ++QvCG4OvJU6sWs5X)HJb7%HIcuM5^BDicdydN=k~m!D&8-TlhOZ>-_O-#9}+tQ*OjsOaZ)Y}d7EsT(~g>Vs9YGd+_sE&KiR$^xeXRZPG1SNG#L*2v}2i%mDV z_lJWyL;kL<^aq61_9?|00kJUyptDQ)k4(4!dLaIQFF@Q)X5+6pyGVOpwUP<*T=w4ESaj_5Ix?!Y@Xsx=%o$lHT8!yo51ZdpGK_3N)l;7^ZDvr=jsBDF zT76rkCQ`78^~jEk3198dxf?kA;i{nOK%_a zq^TMZ!16Oq(o)XUSRiSc@+36*HM9YOGt%+q3j7kd;7kl3Kyc=pp-(%A zC>19PeSAxAiT^`E)+P;vaq{`h9gg}M8KUs0rw+znUEKnAP)~ver$C=09ypm+d-mKQnrbF^@((rh$})XG3nwM6`&_*-!?4k3qFgcRUzO6kjpc^$SY}!rn@)I0|NM8vBpqr`KsC?~jiM zkRDX)?~0ZtB{5d}L5fYZG$hy&884|+2E^DZ+s#SfLp9!9m)VS&(Lsf{Q*}&%81@iv zB+G@BE`da?6gszE6ik8``U9r!a=}W=a1Wu>R_8Zcupl1rogU|})vT8;co=!ph5MAj z{Obu=H?_NvDyM$Z5qhUh4FzrevK85x^5+bJ<&E0VW)-CHy`{+Vs?kJ&)B=K01>-fV zA2#y^g_B(rJUUjdn`s-EXE84jeX^Bn3TMv+h)l=|Y*CHG;;O~rt+_=Th9hs|x}q?F z7HoBNZ7c$ARmC_wEOJbg-PNH+<>oLb!Hq(0m@H6ZWJr47+V)VQ>fAaWqU{TqEf-PG z3ji(F_!i%Bip)Xw>M%^2QdEHe0`{kjQCW3KJ=Luy8WlT<`xbT-#n&co_$_$LfQRW* zl$qNTcZhy*4Rw7Vj$dENu8BDw78nMqn7}9-+8|A19aG>1GA*;TZ6KixJ2vBSNOdr& z9JTYSwZel=q!+pg6>L2DekJ_u7BbO8<;$jiN*2*=k#webf@-(hV}a~oZPovG2ZHsnGwyj z)*}l#yxsAZaAV(T*~M%!X@9l&m1`mEr%!XA|HZex!jDn@BYedL*odV6h(doh;vWPG z`WvxC*&bC=mz@PTmp8%~3EvvcE`b@qD;Yu-izUj3JJ@D)XG@CsvKyW`-0H%Xf(E78 z!+Pukp~VWCrrz`W%p63c7&aZ7+=Sw!jtEU(r_I6<6i*Y!@T;elQ4oHNJeC?};FL1D zFD7W;jIizNZf)m!Z>O>;5pSxTAx+ixe;ZsNMdV-vK($RlL(iuO+@e1Zgtnp3tAD$Tjud}a9NKVXg>{W z)|MC~ILFzYdMLGsyQrd+b0Q-Vx;TN~giOmJKjVA{VIKS-ZwYp6;=kbG-N_;H6N^o( zTYNzLi{mfy0h@htyh-C3yy)IK%KGfyIC1;-LaI}x@;HcLe8FRO&|%0RsAg&YYoE>}bdEh>uCJvs^_~2u9D=A&7L$V}@0ov)42W3fSaI9qh)6M2 zNicVEi^HmAp@M76G_$cDLFX~bg)5Spx!aT@;_38>-ca^!IGkO?-Q@K+)qjRxrQE2i zJOID}29y*2Is5|LXK5!(%YSq7+bdh zv4ueC3qHTE@U!TaA8JfwnVavc1@Bw&I*qCbw!rM#C*}(bxfi?Ou0Dn z{yL7(W^(BQTWD3rxkz55Sx&)Cf_<;-h^cvb*oR9f{Dp9;n+pP<(ho!?7_&o2%UqmI+RLoI#h!|cdtD*yADH9#ph;|elyk45T z9@r4=m^4N~jRbAtm!N87%z!PvX*J3kESrYB%#=OXY5sgMY~SKvu7+$E6?^$11)n@k zy9c#wNrtTg&T!z6+8e~=!3xFLUWJR1E2Y8Kb#QvwriBqX(CB91|2QOJ1qPwlRMlYl z6cBwk6z8aL-$36r>|J#Fl1+n0E}|bbinK#gqa}=q@gVWWIvhKAxa0J&@3~)TS2WSw zZW(5!e~x}DLf{xNt%*D^SYw#coda^s9W69P6KKL))6X(u*wjsg@#*`tFpQL3NX}>s z)j^`E@7cqO(@((Nqrjhz)z~FcXu(-q_*+TqPtVlOay7gwKhJ`D~O#0jllyh2{>(4$bvSah|O7-3X^yA+7o$p`6c*kDMz z#uMbZeka9`isTHX+E#6?Zo2SEYfgP(i)!+O{(i6L_v@NZW?Bq~ zPN9^jgqV5`-b_njE&Q+`!VEO1ct3#|{07Su#ecgTadCq!*5UR;L_}Z9=S?q%jysVn?nrY49AM z>p{ADH z%nSB3Z0l1P;tP#JnUtGvhoLwHtD|&>CJ9bbYsFL!ON|-s`{gpAF({k0w4_|s0Kx3# zT#aqLV~lFiG8lXL35G6SA0eu}+0eH&&4$k{5^eAsg|<}y0nfV0g!XkZ3af#inR08&R%5J%9> z|7ioGrU}=U@G~bgSvXXB)~hbk(*77GD1qK7WJ=R9tXyxD)~gpZhs}>rPl#Fy64MZb zxc(JHeUAw7X8M?V9O1hjRELpf{+q82?FGCb6*0}8yWlf|O70ujIYS3qYoG;422z!% zMjE)b5VXc|zg6%f?*o=T-L&m1@;cCNgD+R%#~xh z9z40OIQJ6_z=p5qpS%4sl=0`kk|&QVtZ=+f?D29^`IT#Hh6;<0xBSZht>jpWc$&?%DGZQibWxlh*ZdRW?~7cY5LoGZfv!PG=lU>)=`2W zS={be3*J>6k-hyb8aRJ9h3`Vg*|%ZklvnPzML0(dnsZYo8n&W$VA0jcm@}dn^5N@P z4Y(D(aLZ*B&n5v4e8k0pf6 z%^i=SmcGK*Bydd>8av>w*8fU^6u$yWjf^!mB)i&pNZT5~w2#?Ht~;u84Yq0s0wxp& zHkeLH*LnU&@kO4U(V7 z>-<*5RLPBU{}we81fPm^--g@xs)drO5ta~<*mH;ToOb7QVpAqM9{nNz%P}#60my}@ zOfA1>RoimiSQ`f%ud)(4bZ8|6HEt&3 ztPyvH;Uik)om3@5ea@Rv4y+IZu_&<)T&i!j-cOu8K^WBm0cSF_tE-N0^}sYs$MRWD z0cw{Z(>4tw$MN0t6^qkFF@mibj1+g!nPD80IYA6b82C865W(3(z-zOg3)McgAI$H~ zt~~;{_R-Kr%gcIC-P)ri^w{1NHAR&VzPuRDA;$i?2-Urz!&Zrbl`#$E9_kB5lr`@uhh3GPR*xk}i!__MpXR z5z#Eiac^!TDZ5vAm?T-8a+Y2ZMK=B<3gF$Q-Hj#~tx{puOz22JAkQ%+5% z45sElmNmJ{<#Fe6p_47aNYVHXn8D&YEcwuydzz=vNR3lptv|xmY=i2LH+d<)vcQ09B}0l}I*{@-YcMs*|EhbtgJeSy+kn`hA$*2m=v7 zJ4oQ|k%NGGG=A~L@U_$J_KmBV6~=legXWVh=?an%qu-D#yLW7?lkn>tradKKtWrmT zmGdyyk;Ns?w}wVA7$5d8k&Q8c$c8gyAfWW$JgL{X(jza%gzF~TYE*%2PiGH$Zm*r` zZfC?Fhmelue*l{$gRUTChSRHH+M9G3bCNi7X0u6s>W4xxiN?nZS`IQJ@78v*XyuX@ z3(I{2aW_{QpU6Clujll89%Q+i=5v+J!!R8}^~` z>`BwpP~_onk^P^NmL96?Dlh=Z{|tWpb0nysXJz#7nwH{!>BQgho7v^~jtIp`tRsMT z2;2Y*A~GRTFdr#_W^?&ZH20+iy#708X_9Ud;m z)n6~_jk`YI0rh<@7W5&f{G7!5jVAN6@UpbN8CNk12SycSVI{HKx@&)i4H;%KTC5;- zHPa&jG8>AuL6f8_srADg8sW36ujE5=r7WgcXb>+Nk1R*z+g(xtl@C*7 z7=g=SL4C`?Tm3NGAus%}dt9&tA?q0@jrvxJ8#6p*(>gJ&^7Miw7`jDJDC*MVph699 zk(Z+a`?=4eM*2X7GE&^dF*Usf?vDobnHDw15!izJ^f)97bFrDpR?${s-nEb&5#I}? zmou#sf5XusH6gt$lN56sGU>A(k|o+fJ07n)cc|BNMV z{&S*iNH++(rs!7rVVFT4e8TRa<$8#iSFNwsC4N|W+HiK9W)OO_bRhjs9jpUJO4MTj zd1%R&Yie3NUG)$Dm0OU3LW$SZ`jQ7bBRtl0#saY8%6rL(Z@+}x5uJV!=tI=LFz~-e z@(-aOod~Gb9CNImh?M`NvySubuha@OI*smc2=N|n?}*5uCXqRcVSU<{dV6eT| zi@%`I&nC4RD%tbXx*BTheEs;F&cdGzS;OQv{~{o!l?8zDKgYCxJx71wxH942>G21O zAgu$(#N~HGwH>FP8Et4L^k75IOMa@zN#$f1v8k@uPwf|r`Vg->dLVGao5g;W0!MGu zUJT9Ev-158NceJgYFb+5n%cAM05Bsd+swsYj%`sFFprYVNt|T-dBjIhSHY!JGyk=V zQ9g1=;MTbS?gpNW44jQR!hH&aF*jtTl3xsDHMBBgv?_hVEEo%7VSFeDo|r!XS4g< zJ;J2jUA-OLJ9KaLu1&mJv~N_cQfWR7oCj(@h)I5|0dP@fr-t&6?#C}ZCGlv; zRF&pJv+jtppO0ee-ChJ%z_yoJYDV`NXx_;z!DT|k-|==lZJpD%{F=TfToal1K!m>j zu8XrUL>|>x8`EHVR()g@`DwhbpXJ+7%;Q@P?Kmf3A7jLmmh4FD;Ul`0z|V5|B5Y#{B0x(-wLu0Wsw9YI zFi9KBGvY-2#(D$l?unwUn3FX(Yqj5%c_K@8F_zDPs@=Hjbig~#T=zO2u9ndOqSi|y zuv%4Wv_72Zn-QGDqWphMXW;wH)zp%s`p&1VmaSPe0)DU?2CTT zRQNVoA^($R!rYtWYB;bE^W&fU!r0YCg5dy5 zj<))#o?j20QC)BLS0>iMx!roV#ri1(TQqTX<9*2XK?HHXq)o(OdL4_9`{|>}PXxGv z0Twt2J?H|WO8`p_nzt(&M6DG#P8?6TaZb&Y=Lwdm`BK72DDc5mky8RE&R_~js?-6y zbn$s31;&r;Rw;g6lwT)JU)J)YwH0R13lr!?AozV3Q1>#*7Hm^nwM4XtVMK?HZ*bgKEtt zVFardvGh~(3tc5rT~rvTa41W+g!(O^5+HzP1Pn-00BFD96=`rU^LW8HgOM0xdM1nU zWSQ-w9Ca3|a(-iBefQp((RfmJMWpLGV&FT!Vxm z8GI1GceeNG7jSr&$AmZh!C(gdt zCz;^Ve-5=*WC9?g|4(Z82MJHtd9aEBNC*XpD*k!)^>6$A-#PxD0@I%yKL9RCVSoj+ zj2K#o|4zOXAq2GL?z^_kh1GKV(l0j3oR7z7gAle*?x^E^udN$REmA8pRWfKs)NK#n?JCvP!IAMq_@kH z>bBMHmZ^PQVu>b+SilRE1Tdbs(j&D|CJcK+neY-yP>VRC0_zWYE@*y?Y8GS|_1pG< ztgM7mr{3;T{=1bP4MfVDyo9?kPjg?C!AD)f4Kq&Vsg zQNgwBL%ikQ>&_D3}-U4`F^`khfy;wTV z0E{_?afQtQ9#|slW0!S~pq`=%uACQCd@r%mbKOrV2Ppq@$NwOlsNAhUI3NKj1ib!P z{Y6>NUeDg--}Iz^1(QmV63~6T@Pg(0CJRZS&G42Tft+>-w%Zu#Y7I+!09r(CX>@Ut8I( zX@tHV@T1-UuYY!e{?8xwXE#elaoYeqsRUhsKHylJFcNblLZY*v7Zm(|HB5|HQp@EW zVogo!AkU(+YivBnZRDsH*dUZ0of)4sB6s&%CTJ$?!g>?P`sgb^R zv3SZ!T3*h=RR>3V0dFTx9^ig>pId0SRt7l*e;6z(l*;qT!{Y&eS-^t9<@W1J;sZg#+Mwr8&I&;S9 z@Zzn|6pGfS^NIK&;_Qh{i8RUM$>l+VOy5XSNlC;I;+(Xu?t$q7+n~?*RVsj?ckK~W zzyg&3PrTEO>Shp%(2cqa-o_^@qf|x{A@k<3*!S%T&Rd^tfU3+DDdBC6B04?`XvgqK4$ks8=ohF82pcP>fG*?%XK7@T&vf6& z=1w1%IzE$vQdyLp`0RaeE>wWsBh=8QY+^U z(vaXZ|S8=b}llmp?D zdlyF5X0g_toLwT=FjvFJYb9CsP#DCh7lcT`1AwG^l7QchU%1E1PNx)RoA0H?`>NAv z^rcXPiQm@zQCiZ2R>eJrp=(>g6ii=df8}qE)4dYJakqQ2Bk63-T;o{qXBWAAo#*fT zIq%(((fZ}Yg{Jbgap*F~h)-((bjT!eh;cgct5|OE@fXJRD!t6uT<3Yp4FV*)V(R_a zws=*$W=)ci9o(j9OfD}P`y+R%R#mrh%^zTo^5MAUt@cTvY$h*vteiHH)DMj%jk@1{ z?Pr=s6rengYe)d&!qX>8Dc5N0@(ZsX)Q#RKF9;wW=#{FM=mwOjt16>cn`bG$2Po1g z*N7?6&{9RKG-{XqAXU0Wwp3QS9s9kfv`MM-Gq$W1x~a6R)u{EROt=7`aGGANn^Kmp zlZ;n=hFkiQs7NDQqoPDZP8F)+^i$DGxGb5{RauFKCZar~;Oti3$)|o;+zUt1R<>tz z?Xqc+)7H}uJKhf)wT0fmUh}fg$+Aw7BC?#jfZtBDvWG3aP+VKHP$r41G#*Q(RDndL z>|j`FjR6ko*$?wa2l><280C`vcwV_4owW0B7fnL3+*1K z5lSEF*xi+)rAKDZ?eAK#J1InTMrL2_9mS)g$7h#eXz65kG3@M@7E%>Avqz+SjcB>X_T?i^@hZC0@Fk5X+m-`^vRd9*yGQANH%EpKDyB}`Ky#dn@5hduf2rplCm)b@ERTUM zGzWJ)hCC~Q5aCZ^DwXalQvy8p+1}(9r0$Y{Qz*$Kv)zs)^l6E+Y(vINFG#-&tCJSg2+N{hV*L&ind%Op zh3z#xzUs)OoD?8L*XTY>bhEv|ujlcVz!G7xv(WqTP{HXA5vJZI4zv9hUCEWwk{e zMVy>IGxb*97oKY3!`U2AV=l|zwvR?yh?`I(ysd*~t$&xC=u>Jz5o#E(fH6_xy$ce% z6Oft3I}QaxCk5a0WPk+HJH`r6V9W|SAC#>qxWr}1)VArrbZ?d_HaX=SoEj|`%JYio zL{p)DO*W>I3hy!;ofUssQckD+F3f-%-U1jp1sWwxLGAK4I}1iAh%*7rJ5!5}It$i1 zX6qrDL+{nvFq)T|jMjCcnVNP7w^-885!ftPuYb^s3fPA9R{2Vj3kxMYq(Ww@r&pmc zoOO7=fz{ymwMwy~-)xMl1(n6^J>ZS4K?=0nWa2}xh`+tYV~ zno*vxXt5QLG~qX)&mELBg_0kjPF}Jss3&<1mDiRFre=W4AM`|ykf`NNG^j1%m8IUZ zXihO|LN6aQDna|fMNxL`f4vX+?nPK;$4`wQjDU=afaoQp3WLC`pQ$=l96v5ps!Cfn z0Nv=Ty)a(yU-)yxO5MQi;nc+?f#0;RY}0-&FDPAjDP;jwg6Ld=BUibuIrdr^aZ9=` zscbmKDaJaR%*j#;Gw<<*k*z@pXYJ$~d@(l))@J6)E?ppaLL)|PBL;U5XmL00!R|?X zVV8;l7B9D7%28D&B&HNr#|kf`S_r2Lb>Ef@=T}}ox8qad+4Vi(qrwZjSPZamGrN2o zT!JAXN+C99u*auL32P^|Bhnoiqc)&E7Qbki&uEgiqRY1APcKWf8P1T>T~oHU@|*L^ ziXZc{nHos5!7m2LK%S#^ewsWuQlFisP8GUwh{@>8%u_7R-#nxVl5m8HPY`Dp)#K^1 zK;F@#D~5zPhJ=`{WahbcWVJMnWAkhxALKoSOWAv5-^64EU|lO<$KT8*bM}5P6gCDt-#jd0SkmBNp~KSB|tX? zz9LYU5sD>3*8!3xMYj+%L!{>U&jpN9)r&JA%Dx~bd}qGN-zprifXWF|f9fuRYVg;< z_x6F76RaG9Y6#a*K{}K4D#Krh`)d{YTUnXZ#6{o5A$Tq+*G$UQOfu*;BVMrhR}!yK z`frNWv_m?x_9`P?X!}V`l)5cX;l zt|0h#^4F+9J#h4H;jd(XdPL~jAYIV-cjo(FS{z4yb0~m|*eP%Fzl;JbAWq?$ebCoL zT{6fA_Fieki?9A!gexkbuj#tmh!>pxUJ^A|N;SuybcIh+8ok+3{@m-x6RDtsropQ# zK%>G`@{yw_W*32u2GB3)?YcF!RCSS?u~w3Uss?b9d(Ppr!Zb+2XS&kXh0b}AwKp<| zmvlt~q&^I#J^|nu&%?^Loj#c>*G_H$lRh{wWW8%rJu4GI<}CN`uFA&3M}%t9x?iAtB& zAFtUEy#B}(<8X(h8m9vMh&}8O$59}$zr4KgyHM%wJ&hI&(<7!%M7cQFpA%g3MN%l2 z^$Y4ZN_GjChxC_w71bD6-Szjg!ot)(LmsBgv#-2wtmB>GyRwMC zoPVzW5o_*1rAV6NKxy(FY`2mkk%CHceo;4Z>h!g+SCF9bREqC@ieWj~AhMijLN>BAV- zB2b*m&~ilS`Hk`&{gl6*MUV^Ih5Pegiahoi=Bpr77XX=&;SNx1&pwG2MM;|L3nNsv z6sxNGN8@h{$g$Yb!|6l!*mH+PhuhZ=RQC)LBvRRu+GX9Bw*t>0fSRF7f$0UX13hNp za5)F)f{vk19^ApVZ zZfrhSdeX8^RIu*kXu#NtY{JxtcA{HwitTo?3&-`OX*@cp56eycfyEw-PsZ}?G?tR< zf{+41M`!z8ZsvXVezW^qo6q`&)+(dPCzsD&0;7xUHzEO*4H*jG+z1I3tp)P_vjcA0 zG&XW<`qcbyYcMN%gbW@^?-u^E`C;T130o)1bH`F%%os zB1w#@9E}RzMwF?R$%pu*se7a+Oal`Z_&a7%z?OBiCJ-?F&z@CaF?|LIMrLqwNfqQ; zAsDjMok>OxLk*AX^Htl!J*EBSp}jU%gQt+zmw?Q=vAx);!j2*fD|5Au)}gi0y) zAs;0-6do22yoKssrB()OE5zqZ?^{(eK6 z&9?=jo@c@!cHJ5@LO9re68LMzB%im7O9pp2)qeuT$MfkLuKN=;VV?)@Cl{CZQzhH; z{C+~ha18Ey4Ej*{3h|zVxYf^qN1!3q*X9+&9E2u^mJ#~Oj>OU3S)gKR6i{-6r&*rF z#@#CmyB}36q$eqoqBIe)!|&iT6mk3LeVr}g^I*?kSiaw_NUL{w#C*6sXq1FKa_$6; zj^iza0fBi#83RQTsY1uDDW?sDi)RHeps@>TYJx`+jI0jA&;)kGM`TAOg6Hsx%d?o2 zEI!vPE%OH&P)ija$H!5``yQCMk8(ZlkgjufRqG%$q9?T|_;6Px)G-WXx%|LIe+e_%6@R@Zcm--~cZ>1~X&{SxWxE#e0FYy(s zk&Fyp9teBg_iX;P!%H~gvqfGcvBs{{JcM4%+emjjG|44P_66f^)t$vJ?e%3;fj1v);oInj#E4iBBIWgJgIl&LK>&!wq8k`<5>ou_Y9 zBk;0Zps|dQ@-}^5%8oV092$tbOe`GWep)6~Q} zQ2|`GDrR3h1YZOGNp2bBmXm^u`5--Gjr&ziC*C8Fq*cpftIAdbju~}xl4v>ivh#L} z^Xkv#v)lbx#>(td?CIHh_wdHWEBDJ|yIhd8%(>AJzWnu8n9ozL8GY$}_s5{d)}XQ{ z5`DK$7kK3|(sn5|L3DrQ@Gmx4#v~WNEa`(n?>2?63p{}X293S2j^E7b6QAYBbib%q z&T_=`#qFS^)YpI?%Qpitfm9&sUxd_B45ymy|f*(f8!WQ{|nev&H#ql;yl z(wvvm_Sg8j@3IAvLL~ca6m>&eCl!@Tu~dkfIDV^IWh=hYb1gTqhoo262)N zv6jRc3H#Bu!Vb3XJE>q-%JEdS8xQfRwL=&vgAPtYLZ;0M@;Uoq%`c`M|RYNo7aypA=C9r+G&-&p!d6=bhvBF zTn*SGUD~;hRZ%B7ugaMT#Yd{(VccbOamH?4vAUU!7BH%x zCZ+PE$f%Y zLGG0cUPAGdI$d;^)rxQ=KKo`j_36%yc3uZ@QVefJ{2?rYLV+0?5!?rR;Qn1&eb-KC zgt|_1($ENdP!ZO%zSUUEQPm=@LKlUvzvFD9bHUCyk|nFZ+Zb?IlC!it9V{{)Vwog-!3q1;XITRpbwglf^CS?$B&~{(e4Nbu{e93Lc>*l4WjjO|T_?Bzs1o04}{uix^Wlp zbOK*ko4T@L!E;=nj(%%#UQtfy+cw#adtcDed70s3Li>iMP?b_B4XoE@1c#;4d8_v| zY9nr-zudA>t>k4w#?E>hq`Xd~!mk;%uiV+*hf8NW=p|zu5w~V{{8IQHa`maG0Y@*^ zQV1k9P142lT+sPy2V2sZCr#SKI6D_&UUth3Bf~#6PBh%%rYbj0E%5g<8>zf|RlMH( zA$n%k?K6seFPyazM_2Q@I$i~*ZP_}cG!vap#o@YT;<5mv-cxR%&NxHe1lujPByy0I@ObT7qXkKnG^>V4eYf|3LFS=w#BUr zTFS+%aaatyE_1Yq1e{sdftwVpSbS;IF;G@AtI)-k-@x@o}O-Rg1pW+$#A)+^KYX{wTVj39>de)AEoK#KwQbI*^YszTOjCdj<9?%Hcx3p&N{j7K|OB=&1yDu;zD!@-M zg8&Gnf#1}SpO~XjNWnV1Kc+__dv3UMxC5knU`-zzhu3jzvZ5n;7GrR#Fx z?Re&(_^fDt4)L|e!V~CY+#DVglSDQ?5*2)zTl#K}S^pJ*05=(4%S#%#FYwSC6q$ET zoma}hnE-zP(19zT7URvlVOA8fl^C`OZp|WxgIpq4r5G?YE3rSfy=9Swbjs0zC>?hy zKBuHgZ@$skIdWrB#yHTQ!ZI1-*lK ztc52#_*POizY6WpytH;C*FK{$G?0E?<&x80wYuvm2*(gfSB0_}lXw&z4{B|TslNDFn*d}2o z_p0Ezpm$U#4LOHr`~jQTlVo9c5m4nTI^egSTB;jk+~tJiX5`TDPoUdBiz6uF4?3`VY_4F?+EbZVmv~wW5FtO_)bzq`)d$#iN|W1hBi%~27s^HcXDbKT=&Mywwmt;L>*f;vkw!(>np7)#`@*zBTzE?u%TPtaQyH?>S)K(oEkL|N0?C2~U;Gz-hV$ZlMHR z5~WOzDpSRnGZ*$D&71w1?LQapSIT*scD|d>fWGH61phB#AVp&nD`O)kb6cB#E#d!b zuSSuwwGyHNvJWjez96RmRk9=L-4G*d;- zv@@{#g7j&fP;CB^V!9LDOOBblOwUJbpZE7~od@b=490Kaf{Ef+)dm?2Cab@U9w{hV zTYIW1s+5o%uiV!Hm>rvWwLlC1umF9v3i$NINPzmA+X% zByaEfY5f+U&epR`#yM=v!>hgJAvxukA~S^!#lVCbac1H0geuz_G2+H&wVavm?olDT zygK`Pvz?+vb;a1=3ZROPP=kHS;mmRp#E zbQ>^6O4vxbB-UHpl+)C-)`icyW^m0;u9H7{z$4}lN}<$TN&pZCi5B(4VEUPt$#Br9 zIafP@E2W}3G0BYXc=MpS3*noZqay)q8iKEy(1e(1TZkYY!d^m-@&xxaY+sIGvy?xk z!*ts+O*VSZrFB6OL`kz9-~7t!cqZ$m_hJog{+Tx1U(7R3)jnWulQKn!hGksd=ni>- zXMGk-56z=7wL6pP;HUMFQJtyEh`doZ3U@3$qG-P56b+&2FFSkRA7S7`ApS}CVd*{_ z6}pOcOJt~ZdcRL}p%}=Re7Zt<hl+W*f^Y7aLj_O#pRiv>CZc`i1_~qu&>x79vA<6D*DmcT-A>==6=_6^8Su zJ2U83wwdn!6B}MrED+h)cQ0GycQ2d3|KIELFa2$bT5=oTw3;(D?7x-9V_vER6MhCXGZ5!wA`sy`1@G(^OYu#+`h zU@gh6RGjd$qI8dBoOl~&Wr_e7x07&TuIKdyesL*dI?Bwh`g0G4a2kvK`iUqn_^}2k5~h(221&%@i_>DQMgn=6tt2(_ z6+Kn=Ukl0gfUyI~ZJjgznzd2<1e7VPN1wH zYyPUZ`#&8Co}&m*t2pYPPnvv^!n-BPc!2ZLJ+WI$mGV*?~0OnGsS;zjfha zXQu{~-Y5H~O!}*gSHhy=yU^_p1lFRE>TQLsUx#aus_G1#$`MtqtIUVfanbgRG& zT)OH36%ER89|fZa*4003c^Pb+EXHb+1A5!2sOswVZlnazkT4b{UG~FW`QnYv&yu}B zNPbSe2@B*xbz(g+xDkPuCEb+>)daBUkQA!iq(p<%oQmE%onui~Oqm$HwyL-(o!{3! zV!aTZ>^Id>kGV8z0ey{)%M{Bsrw3V^cwv!E-?!;mx{RyR7X*FhuUl`vYKHXr$+f&) zXe~FsMl|Ymab4OJ^@LgH!yY)o6@xZa>Ogityy~~dNEheK9H`A43$Z~}hsz#PT21Xi zk}c!QjZbTAbf0$9Cm5xpmV6h?ur|Lg#}Mh0RcLL(cv8wk2rXa&WSi-TX=J_{FiiKM zE6(&>Ty!<@zTymVotWlrR1TMex&p*!{c!^gz$vQ7#!IncM1~-mp z&ze=6#x<>aeXTWa@J?f+%$YCAIL70Pob_CZsDKqHJeWddZJ8l{1aL0Ea@{hIkoB{} zM8XHexrV-}=)Wa&%HIO^F&8QGukxytFIH5%EQ*KFv+`_ptz;2w_V zCVq9Qf{_)GsA0w{sLb>)j~{3trP}*Aiv*ixy7N)nQFUntZpM zFq6c#(%6nFt&T7s*U7I1>D=9W&w6S+X@Gw%WC{5w$}@8h_P2sfGdmWQ-`llEPrPo| zstwAtkFb-oiK}k;zM{s*4{Kg>0Zsb`A-!B9St>#^e48T_gdjahG1YSpb}Y_7e}L#i zg2-vZ1_iV8<#yc^aDWP!QFw6G3S8!mL@&%&2zw&rdn>DV7*Al&lsOdF0`5}m%-|?| z`^+GXYv0I4i0*X=VLAc26xwZ6bk-%)Z^>%wV(ist$HiCCLwQY>SY z7BTsIJau=eRu~RxI=0{3n0i22R#cX<_$q0_2_`XvgfJ8f$;-YX?0BiY5)*i!!r^_JU$`aw!Ra<|gXfxun2vMM?Ea^d^YQts zq0$e6l_~^)PbP|gT?Aokt;5PHa((vrjr6mT*Rrm zsS}8EX z?G>{@7Xmu*nn73pN%Me?!q8>oB)vIo?aY%tN07)i?}Ja@_+5~`Et6dk&Ed??H*rgnK72CmG8Y*7m zgS97)gQJaQwpHS|KO#acYW8YD>w^y{O4cJO8Hz2v8O8em+QOp&k|dz!-y{f&5|j*V z0C{NAKQaj*jK~Ipu~`oATOu2r{X9L3ly^Sk6QkqTK-1ZZ>8_}Y2usS^gv~0SWmUf| zCh~RPV&K)t8n1G!)6dGqT4010k{n*Z9>C+41H_0tDfWxzgzMLPV8b`=^Jj@%T;nM= z3K&E|rY>I2JK<*2+Ax<_C4-Wd_}b^M0dZ6Hl4c+fY|118M2gT;FA`_k=Fj#Z1cB?i z4NYEhlK=_g>LHm8L;_(Kc^vt*FFO9=)xHff0-@X`KVHV$!ihM{&a(YBhmMO$elueN?4yN)|SSQWvVoofTQluLxlj{jA49(*YXbJ~LJH3{3-AJ%VbK+>{+d<_D z&`42?xF{Jiz+v=ehN>vBWE^?DiJmYnVErIgONqYH1Q(I4Vrhil5lf@m4t)^PRzQ6**yJGDecS3k%G z{z)P?9Ypehy`}1K%udbQeP_;!(?K2m;GHYoRrZ-r`s)fo!+|UjyPYiOCaHvq1b)kvJQj#vd$xs9R@^DD={`XtJ7lR9B4P!dv{zifNlCFhMt}?1d`j<_Jp-@2nuCm4 zsvCY>wEp${_1Nd;w?*(TFKqQIw)XVj$=vzE=1#(X)8lr7i{CrM7qK~f^WT2e52bmVAn43H#+ z@yhGUqB7q$vZCi|;McGY8A9*%ImGsQ|GzeD=JuM|!JN z<6N(M(t+q^chRR!GN^~eJE0+&b0LYu+9ylBUWC%DS!V+m6ZCFWxhx@N+_py&Tt|HQ zP-fA(kDs8iis4q6uPsG_WlmEL8RXux^C!R}M>4zmQDaT5$OW_#3#Hu{Y;lLO++>7N zbhrfyG5XO>*q#LPLu0-B+i2l5Gv6#shoQP0csX&I%F5LusYkc+y$yi@vYO@y>m=I6 z$QkWk>Ef4xC^`5aA|2O*spD5lktNceg4yMvdC8VjA7YfL^?ND%;cSHs6R-xTduGC{ z5({A^N)_pCY#fV?0|}6s0l)WpX?N_BkWFB_m!~r4riMCjHJ0lx7Kx_ISx{y>O&Oxc zvf@7o&ZygsM6}Kes%rDObD7{e1hdg;CoUg-RhB?Rhy78r51y`-TO=Cfdit6$%v3PZ z?2k1t^=1^%Yg(BL-~0R95X}3_L|^8RhJ?-2>=McFyB{D`iZv~QJYoa%@$!QrI37xW zBfet9Bq&yDO8gPi2qBTetB)Q~5@F$Sa)kha+R zlU|%wwG_&0@hz$jWeV+fFl-Zk=^>@9buoH^HXW;FpJ$aau|Wu65Caz1)6crHp~I?v}%OJQmsn&DGGJ4QWSjljbr$e24DR zx6|E~Zd-42TUUFBuKIFt%K9a$cgoV<{-fdfZT}T9Q~V9%o`^+P#~x!!eF2$f6>WtwHNE7<9IYFdTT%Gh()%|HS#E0 z5||GVkY+FnZ_^T2cU?3*S>=2w^DedC6Be{um&c#dHH5skEY+u z>Y7#470gaGq*?o$Vy}f)IqtLq2?4TnX)kqdRKG0`0VKGca%Tvz<<8_r!bcV*bn`&v z>a|N=PG{BiktU+FWynApxqY%?dz9?7M3_Dueng)FLOl{e<#Ti!NelJXS_0cx90)jA zglh4%l~Ct6azs_ZK^d!_rOKP$%Q@jmYyP?@ys~>d)aM-+VY`ZS-AZDZl66gpJ_I|o zYS@ze&4Xx(F7c@P+oq9MVXPYGP5KwRK=vzZP%zBlNRjOO+<2egC_&gP-s9swX_*0C z2H4cW8mpI_zZrOVXpUy!hY__(?I#86^3DXD zV%AUUb&}Er*LM`U^XebPamGsehkZ?_{2c>k#x#LCT6G#9k8K1Z(=<`6*m31r1Qr64 zZt3XZ^@b%|2Q(PCagbTa5ZBJoocE>g#>n>mT05y2!M#HbykWHdp=R&0h%#y!!VR96ztV7RefH zd!K8rsoYfl~BK1RePpE;wSC^(%*cJ${W^S$;88b5pw&*LgRFSaOH5C}PWnDE)* zZB}YTTk%SP>P3B@Ner#JekNZ<*RX#51L^1AdB*V?NwBi-oPO?mvHxG@_TPh0mIkKA zv}R7$Ryfgh(f#!B!k)fE+OEjQ@Gvrgfz^Wk(Ri!uQicegj(;8`%%5EMJov#;$Q(*l}UWHc2}3A^d+Xtg0c=Xgx6u`HL7UOPVpx_2&A9Gd(aB9Q&cL zGDNbVj5;zs{Q+u0XGhy+i+nOYY1a*YIH%=Y9$dp5>mSry{{`JdPYcylxFsdw&=++J zesnU~m;ZCdH|f~y&$crk)*qn%K#>2MA6n58mi}#a_xJkmso(yS!I2$*r}{+RKEf?a zM3`4sfdwjo7mmOl86-fbWK*-iS$#SPw%Y72&0SQEe&Jm*`X+_U)y9Bj{(1FR-H(ug zC&_S7mu|GOVRPuKWGv08-9JR?^X2aGc0)?e6gMF16E6WgYnkKa1adxhT zi0@W&T`))^-_WdQk4L@Fe~xvSnZuF_o`D!jhG&NpTghxb_y-D%zZN!RmB6QbTi5=* z2)@_!85Y$A8$b^q@WdU|(WIDHDup&U4^d{-$?sDQ&vGbFt894Iz-HKRG~?n~ zP6_gUedsLblg>2#=G!GT7-AHs=^C*zPznWhV z$c@BUB+`2|0R0h~(t;fHn^8$6OR>tJ#kD*pD3Y@mlt$1&a zlS}d+M)v+HnFyC?9Wi}Fm$cvLKj(jGm4mIR!?(^Loq&U>v$e5})4z>nDt(KY{5`iu zRtAoaS#lGy1N88j7gW}H@{pO&e)s-CyQ+c85CpM+Nui4!5|zwDbyOo|z&XQyaJvQY zvY52;_Pt;+U0hsDZ#OTGu)EM=fl$_n$!Dh=P3cABkOi$jsS1#YZZlfvGI^7srE`+u*ddKrpH>>}`I< z=u}EmhR!OvqGg zNBfjQA%$fqhr{Oip^hIkf#bOS8ld&S$8NO%B6_+qDk;BOW-qmedqaVhazYAO5`KgF z&sRv8y7q$edn=s3w}Rt;x)p!X<0yG4IY0*ZZrgs}R69VpAh(-e42X2;zeok|xt&6` zB=yWoh|S)wTv9}kjRfJmC%tN>PxF64wL1EsDXTC+AHvg)98jflwJDtQb500UA$GuH zoz|-&c-g7&1HD+(68F+jMp4PcT1fzW6QV(q`fIhsybK_kNXADI*N>N8le4KKw8}#? zv>=X~M2pa9x`*4(Q+Wh2ZiCqPv0$eCp*|k1FQ$K4`XDlTEG0LQ%~!or#&zGBY{}Fi zR@IzTK5TaE5Z`9|tU<4=SHZqdnBs2BtLHmM;jLf`edaP8lL2o)G|k+RSn-v%5KS<)Dy5TXIuO!7w|Ql_V_JKmYMPAQwu*OMo{ADb~bz^qy> zq{&T+rcNW_XT=3;#TJ7O%}I4lUcAdjrjQy_POr*jEX8X9(Z&@RG}%)a0^okd3%@m3 zOiE2ild*ZKiZby50pX^GOyOYwD{P}%1OyRoX6*|c0tJ{wPkF6yj4 zDeu_Ykgtj8vAuVko4u1X#c^PB8AGWa0~2o)X*2HWNi(1i-fkQ}_5pau@)CZZyDK0p z^gV12K~38;YqU{r3Ab;cHl^9^#ljX+3lRg(TnH`Ggklx9wBla{7`2A@l%+CxqI@jF zG>~(Jq8pQj>PF9`6Jrpf z*wABAzz!IU5i_eP@jiV!i=yzVmz>#;qzRKMR2rPjcmqs&%$&7PJW!$014UtS*``9j zcx&9OOaX(D4z!-pmUJZi$zoGlqgf_A==XQLc*0bu;lQ(Y^I@LQvgAYKH9NfX2vmaHg0qDY2Ze) z=@~jZNh`;QP@;B(-iG13%B9;I!H7VI5GF#`wLG~(<)-4{9o19No{6gqewW(d-b zd`Ht$d%Uf-oiSm3fr92Fx_$MRmLKE8RiK>$Wo@N;Vu10*W+tVZ9O)(Dwkg+XL!mUj zrX}sBm$*-8OyO0GJ25>w(74YdvBl&j$JB7LX7(Z7oyMh%V|JTR6y(nbuW5ND&2|e! zif8TU#E57AvE0G>CDeOGQ85-ASIznou!qPp2d~@i?iI<7B8oNWvgYb&%yk0yy}E#< zk_WWJu%4q;mb`aFRO{gTG5_Po5TDm6G%T)s?67zq(QQhs71~^5?0qmZ+;yfwF_{|*8x$Y>3Ei@gWDA6 zSYg-2zKCE*EfoBVCryEX(E78cbJ8=tqSxp`6Qr8~Q;pc=LEMJ~coc*&lOQkTxH-X{ zS)*KLX9V?wUipFA*Kus3=`kxEqhw-)oo8^Hy=9#5VRaIxEm8&ra(Pk6vImpQkoJnJ zViP{3_CsB4M*#C})}+5FOeTmfTup)yRi?tq&Eko$pup45;lLu=HzS zYg9nmTUYtwUwlYJ@0y`(5_21u6qrQx3N#Vu=ly! z$9waRZ?!4X(!OYlc&n)D3W$ktJ*w?hYxDU@t&~VKBpN?L@H!TSC9?}lX+*RWCKcU0 z`i_4bxh$m)C^i0k{xXZa+h>0ImUeBap z6f@60?7A37H3@_8Qt|gm-MQ@&#VhnEWSvGYJJEPVGwb+$3H|vGG)8};WRH(+?yc`K zxZ3wn5zqfHi20W{^KT$CrKV-O!HVp&Qo}x>Tga?Z-+fN7rb;J12Q3Rdc=oDJk8JIj zC+=4`ZyfOT21_wkY~ylVWd^~n=ybXBGD?(%D`p3sQtr0w)m9I`0KA=<^#RTn&g)R| zi_)CMm%M6zxNN(o)laaZh?Ha3T9y&?Fw9N>7dSxCL^?o+p;r0?bg}=-(a{@DNj8m{ zT7<4dK^gv4JQ+Gsx7Zzp>IgB4_bB0$U=0r+XR-;8c&E3~Rx^rvTh;2{wuZl@2Pp_Xi>H6P{_#F`mzd z6H{A{m#;HhNY3umi)_T&g^HOUDBmJzIv>JBZ;IR8#qmrmTUZ`?74aK)F(z4(*w@KD zx?$PjpB?xC>A69^L7KbeS{`n>5P}z7PtX;(gFK#DU=El#H@TmWUL#gzM_0m$ll&VB z-qydR;XO*#)IBs4O;9?1cQ}tk8S8Xwt&iO4KkT#7R~66!D=R?G$siWM`W>9|&fX!w z0Wf<3*hAskRNwaVj!2ZE@FSd$C3481al+zj*(huRQQaMth z&)N65*WIOA#(P4ja_q?M98jE}%}-pJ&bA#3g*iV`tq@N91ZQ0yypb z3PTN|EFN5yEhfF>zz}lss?g81HOWwhpT57IMi1CLyW+BqqqGvZC%r0hzP>8m1o;`yYx!P+PlB$z#cBrju5?BBWyrcsG8}9m1;{5jLkIOr z0LYDq0@i`_CPumwHBo8`9{Bzv`T3iNM!ck2K!5uU2e2PMSpHkTA#Pyv(_PWn$=Sh1 z)xgTx_}{dovQ)ms48B>=7656A0E5EGLvw#wzo>UB7dAnv90K%#`-yvDjH{z2Z<)AC z0e%hY?MA>o1BxQ)$-FBJb9G1+b&v?B-%n4bd0vjRE!;olT=4-&8-@umOvXFtBR{EZ z$SZH57EiMjSz(eWsVCPDK4cZR_E)FAg04{ZhyP+|yt)ypHq)k~sMzq#Hxq+5IfZ18 zk>U$3&MdER$tK8@v>lua6o-ZhWn^CMC?BG4d(RR1iD6jmxQ$r6H>gu87^GvvDW3;f zrOX^fkS0m@22~QZNk+*h$mFP_F+*gxpKQX>M z#i8D^7hYvCuBF5yZ~Y)I=^dh2p^Box!X~3j3#FurEZvAAMt3Na0{)gjvvcar4!KRStv<@T@$lXV18uPi^$f4}a_hjN0BZr59Y0 zq44OitB<-Od1_WcC>gyj0S&=h?_8YQzYcxa_y^rfdhN#;1SBaLy?+^cF^MZXN~XjX zgNRhWOS|!Dr8{6Xus!!M(o3T0!D+H)FufSDN{dxB+L00ALur>s9v0+qbgZjroF&$# z@=G)6a*=^qLGX~|k-ko@e=_uy1b>FR;DAp_bE(z8plX;q?Ty61d5g=f6vt>Y8E2CR-tYI0r zj*~{gTsAKWAwY`)_4k*Z^?b7w!j^wV**4z-$!VVCGEw_w6KS88BM4pL=!G*=mY@;i z7*4XhQ?1gAQ}Z?yYNphjxFSPz>y!e;b??FEuV!Lz)UaWcxdmJX<3>jC$hsX^e1p${ zKkPxC7Y1|M()s?7KaMI{C8(B37#^Y#o-=7O5|y}lgjeb{3ac~%JB+S`lE#^4o7u!? zk}VTv>2h@p_x#88QmqmdP}c~HeEh~148GX~ng0jZ>+frvq}&(&EeqHM_6{c`>jEo# zS~TmlA*jD5IG;T1l*cBLwrcTHLj2aIi{xv&u8MhW$iJF4*<{qV>_nm*t z0T$iQ?DZ|H+IM+eDw?g4ZV$8jk*&3Ld$gzs1r%6afZvo+Lp6E}=$P@FWUIf_9i z{ArRhPclUoYl!L)*&==Jj+skh&0#DvfUEfN!u38%g)h}=wl7B($P8q&`T@LI>|MBG zp;CxnJpc!FqR+{r?+B#l5D5|JJto9DSP3PbEBCN5%ziXy$VSwBDDPEuSMk1M&YJ-o14%_AM9S+ z0-8V7C{49>^RG5Yr>be~UjG53`s=2dwF=DLzRyq0_xkV8k%XL$sjazEv$`}}N`(P#N4`YzvcWpq=_(fdeuH|~iM8a>fDHc{P^|u&uZwOh z1HSQm-b^J}n!G+#KJbg*pdJ5&*9U;*l1+VELHKxw14C`k=UgK~8 zfyX4)d0lKp@!iFomH6zr9aWZkkV$X9dt1?+XWhI7Z2JX1^OaX~^$%e8-+j)MXTkIO zi$#7v$^ZS|k@?FQU}Gx(Z&293ZgWz+jNCV_A8h)f+>IcwFaruZUy6n#8$1{Y>@R_I zDTQHazhT|H@yQPN`NKESz5~@?gyC`4)z$QP%arWy^X3)w$BLc6ZaCD2UE9OHxD9)@ z@ScLnv;PKQKyT_W!i?xJm z#682j#9nLL`mbaA@}H|YNM1Q%?C@^FatFcQsZ8*D2lM3=A7&WDU!?V)7D2UCg-Dn#R%BuS;x zMgHRzy1B}eny%}sO$yskTuyTdN|aTm$i;{L>*e>CGpJwMW!b8ZJ)lN+j6*ruxqHiF zp>z1N@5Uk=_JCoykbnbvq`@Q@Tm$X2OS&WpA^rVeAqIZ@pbqf9N!WgX$N-7By?M)s ziA}1xv3A7A{)oLUM_sGmI`5SWW|iD zq@wcGWdyhuM2sDY(c^x_kiAyPq&~3h>O0Cz7OY*fdvJG0w(9B4dM@BO^0Rz2ThJd@ zmXu$tn_$V`N=t>PR2QRyG6G&F3fN0fzmWA8A1vP67JzP~C|WIivP`nGWR6O}ZW+aT zgsMR%F^6%4AD+;2rg8BF_YHJ%WzwjXHc=?oFRB<8zd3>+0+1)Cc^`r zx(=HwLQi5xW}?TDj+m|*g-KruqZN{_oN(>>3_g((xzZVRzN&g!)nzmEbKE3R_13^1 zj8P`)E;bf;QmC5h8-Gd;)uhh5Ey5or2-TV4!T5O>cbQxWYBX8rSUoy__b zU3I1K`lOgu!3sA{-U-3)G70(#;x~1ff9-egY*Ml%}{OL~u3=u*M68XSc4~@j- zIAA7HE7W6Lof$O?!-(kbj-0&G#24v#itA7Z<|AO80*B7Ca@0OBEz_ zpoJfdG2wagE?`r1Tpf--xK$Jy5f)p5=rD^l6;{Wo+!>nLT$ZxUa_uIUD(B04yf z*NE<&;?X=@wh#q6{y_?Kea#kT!otnXP|9r!q#|cpq!-50lQ68Fps=Z>HI_}Z@vmm; zL=w(Wl{1I)XFq;-S6?n=G>o&DFbPw$PLx(C9ZC3Y=~U1wKehIzb70yly21#y1_$#n z7NM+C%?bmGmLX!kc0#;?w5wX&!ow=ARlAu3{C?tgVviJZ6B*E~Ot6s1pxAB!_E4?E zVoWAXd2AR=D(%FU)(PKG1%?=F0$9h4Hjyp zD0_r$dsfz%HM<}*irw_5A^;>O4 z?l2-MxB~Z~1(=ml@#VFzzTrI2bNC{E53^b-Xa`~Six8ZE_;*~QX$7lJY#zf^C_x4W zYa*EoFO$kZP%&rM-Vgy~yT1tZ#d<+?0e0QurY@anWAY=+@#KAB<=z>+Nzof&QOkK; zwB{;ziwCKZdcy4}h+jaRmp0@ZEjC0JjYb+B(u_`80@X=t#&-0)rPh4=*i7Vh^llTy zh>c}xA57aPke`Lh74xP*#N@mfprvUSSH7L9Yche_B2(gWgNAeHa)Cs0{R}W{<$3jk z&|%FwJnzai1aH*{k5^wj9RRr}Jtv%sq9{&-*ka=F51i@U=KY|Jo-YixwcC{*X6>!g zw0bADlWTkxn6g_;1!o^^S81L&*5ShdXIdN0;kHeye!KVV>(VU8_+beqYkjJwGQf}i zFN7D7Ub&6X&Pjr=o8`j>!ELb2y8sKe>kze03nlIDBlI4==gyg(VTCc&Sp@G;n7NTv z<{NnHyVXe(t_+;JRaBI_({~wy_tN~*msP(kudhOM<(suZQ>ZyD4T*L36Jw_rhG++4 zkR6t}Y_&tOA9YwEp! z%)5uzWBh(Osr%K2SqpF{!_4;g~ZgPDxIX61!9 zm7dW_*k$pc9lYcKY{$uZf_SkAuBJ?xL%IJGHUh7u-XURhg8`2Z&t=dTfh+1{_W zMD|+b*>?%qxQ4ZL_9N}nKN+Vyf|7g2UzEf_DtqqXL8|y*9K#-J7$jEK1~~s1$vne` z^9)lr7>F=J*&Q*c_j<-@>3Z@v?>wz%S<&qdh{(BNM4(s~i9QfNcPhzWMB){XO++F} zLfqTe@#Cs0_3t)~<{1uPl;YR9&Fc`C03EOt}MKP>!}L1TgLqiX(`TiAnWd5f$T!s+0~lXB)+VbHc1=6mKwx9 z@d~+`NUG_WnaHEA9pdO5^4>C;nX!;L_5IKB%`@492=I4oWAi;)!}>pZy8b1-Ra5u| zo8f()YFgd-2}rWE&x`mQU~&8n><|isaI9t$os!$+3;7jnx(L6z3WdiLg*BpZ5!2fb zyx%XmZX4S)`d~IAep8#Q zdiq|rdq$fpA!Ewk;xqQ2ex>#d_5rUZqjX#jm{r9VRBn7&?)1<|z&#E@Z9RpX8Qy|i zB@Crlz3s&x4X|_|NqXci-{M`3$R3t1d>HH~C#@~@2s7Fg1OGQbPk8Zq~|=CdDUrnFdC_6g_2%rLkRaoNI<*E3))c(c0D>9m%yk>w(~WtdlJ3f1JF4@M&frQYVw*p2+JEU*|WBW^&~I%K))-J_EDh zCO`%oIeE#7{th@+CzUBicu9Pl_7Gn;@l@gHWL(vhdD_g>=@B8v>DDm|=OTahtTaOF zAkh8lLmf-Cuq%@g%d+>+F(@JJGacSTT22J@rD}&C91AV>@qy!?6MEi`UDDjb*fz1j zC1Ge|hPDH4faxVuNjo~%|rE@cK-)G23<(%~~5}w8et9;b5*uyg0&(zC6?PYJgo-S9F0I$NI`^+PZ0 z!LvZ$10@Jg(5KNYJMlEYBv6`58HS;iNtavjFDyw}()EQ;jZkn3@T0s)1Nw7g@D96d z$HkLxOQ+K1!(-6ln0~ms{FK&z)p<~-|eCN3an}0Lc}fjm5Kg+jiGvlJiWou za(E2fCS*Yjz1_*wHd!9w?5KPZ z)ixNFqO;Wz$~R7`36AM#O0dDxfItA>*?-AZK7mZ9j<*how@Oj6gjBA?mIN@ z9|5?`vC=IutTGG}?J)d&st@zf>7Ft*kH%f#ex}ov`;r*-x>Ryv{sFx)&HnhH-u_G^ zBa*QOSVZ@qefllNLez`y6L|Mc(w6`bji1^Si;d5e3*(>^A!280n2 zPJ#@Zjm5j3PTx{Eu3OCx{dIdKZIbr`Etw|E^U}mvALNZ$XBDQPzn^x`r^EY~P(4`* zgjM)>^+dY5&8fW;AX14R13w4QBe0w3N!=YV$Kzlwksl(M-@R(izyd;cRuTCk>cp_L znH)PjG449OS`%%uwD689PuMx;LMnypwni1%tfFHc|%@r60Kk z1TxmB-aEo&dHsCDBUrLjBT>mIZ&}TlI9|K@C+cRf1k;G`_=5)<(#o**KT2u*J*N_f z9qMl1?;jEL|CgGpvYCUi!A~Uv6XSnM;{L6TPsLIR>$^<}wuL!Gkv0gj8GMK^Q4mr+ zH)tNPi8Ynq(yURpJi`uLimhYPWFYbrV?+_N87sV=|V{}H;apok{f@6O1g~SSLpdvbqChm1IQ3gbcUm5+-$>f+2XX?pvQ zufMexPow7rQ9WU=Y}7Wu*2U`*WF6DeGkHj!)+^_v0@Z0O%%4Tzroi-~oE>>_%;QWLZ!NOI%Et(d-h_gxVkP-iI` za4*tf)d_LEumLg*b&`K`(sMq!x>qo3!}0}HW#FKy;`p8hdWd4GU7cj~nL!%kGsr%er4r5g?^g4P2SHjI z9X&)zP7pRCy!7NjcrZCAUu*V}COm>bg4%&Adn7`ygP+G8WjkEYbc-zke`rY*F8w|K zJgl@nOJ;QLVp2fP1^hphy;ESN>#_yfosMnWw$-t1cWm3X-LaF7ZQHhOCmnToXK&oK z*1l(*eeT12$YcJmFsjC=DxFJIA1jU79wPQr&!ZR9;AgB?j5jd!S124$*MPDq9fPM& zc*uo5ITs{Wfg)y0xE=PYF?jlU5Tc&$5t!LA?rHP$G;igO zs-YZw5GENhYucUj-mc6r}}Rum}q5 z>y#)LwJ^H9{6_t8z{qP;bbClkG%LTl$ri>eNp&=oQ5|S-&bgmZ4QoGhCZT zBIcEOWBnbGwfunl1%~$LsEH5%N7<}2-QeN`%MUn+|CEuG)mS{|0(7u9;GaHm|5r%= z_aW_fCWum&x0$1d|GiA%f+ACHF^VyG5Z<(1$(*GC+SNJ1;&h^hXpI8X^aD`rHV#S) z{G4u`blG~`SU759kJ-k)RKCx1tEquEL26Eu+3Hg;np&qEPOML>GB2yQn;wE;lQUB` zRRN-rOeU(P+4HXe7NBvM*JT4obu#0tNXHxdMMUiyJgX}}jV7;DbDoL>u_rRO*22(jbP?SZ1QAs&uO8H2)uy`&^)<{l>o9-TbBx-*W}hs8<%hkmTX)4N*KA|eQ@fU zHMO9L3B_DM{Ww+bdNXJWKSDl^o(P~u9w=kPKfcYBWa~6BYgo|*l^(#8s zkcv`ecwf@R3=GyiU!-i?MZ!F_F=a@vuRiB{-1v)HYfh(S3~)ou8IJJ>+a5QnMTlmu9wqH_2ChVTmH76b5z`VG~1s@439#ii5`mW!As(ox)%fvG!m!^U#iVaFfk_XwtfOH|lRBXqSiwU_Z77;ZK zbxwRA81=)Cb)5C-YfnMhFrF^KqQasp+opk}eJfQ@rfxY?30Z95Bdc6OQkQeEQG}OS z6t#R|(&MR^TtikV<&pF6lfemMH8V1{v#UHY?zk@}z5a)NTb(>r&;Sep4qym$e;3;S zXG8cM&4c2;S^&mO23!O?`=Xr5WsYYF9LY}hTa7k5y? zY3HQre>+GOg`Z5MRMWh4p{^F@BL7nTI##Z5!r0j10-8JU;1zx`+unK1qH&|&qx z?v+`&NMk!24o1Us-YM#@^8MM&(RKsXSG?Dg+g|?H3p{j4uLw@`R<7;{)t`T=XMdBr z^|0h`9)K^O3`ng1hc7Q@>13~GY3Ba#Vm3-%lkN*Y@;hw9MrCXLrSL`}i6u7@9I?PG zJ^^CPoOAEIa}$OloOcvkRlAbFF4&X&?szG@kQC#Q;pAiHmDb_G{S8JpCMv{$SoW{` zV*6aF{jzB>obc|YS_HHFUZxLvQ*(r3i;@I<0Uv2Ch_CRG*ohXk`tiracV4wBG=AHb z#d4|A0w%ex@xcKFA;4M!y%}Yaz4j+tPD>CagF_MYO3PHqylw1^X(!`$i$zhTl4u=) zaaT_&iXh5d0$m}IR(%Lj!O&%aVO#sFclXSo^rlR~>_o|3jtl~76tCyoHc1R+@kGs} z?qCoBLEjF=41f}n(~rXS>U5IR_&nO1E{aFzOeE!nfyo4@L>FN8=G@E1FZo( zhaK>iwEx|M{`8K&9f(C{%pBlA?O3mH0kUqs33m#n;5>Iq00(;YEw?-%aj%Jov^wch zmB}#D!(*zeOIHp+(Ghq>Wi=QSpu4Hw;N3;P3v%#<<%NPH0TV~MXSNqe)D_~GUo2tb z_o8StuMXUuA|56pNN5hccEgFTB5SW9%`UD|WtCQX&VwchJ=vHjHTlM(v!X)|I&wbI zX|+n4+*2FeNJ-MZMmTya%knFeZ$1TrqD*T{)N2W=pUX~usuztdmYNLa5PnqnHFDdw z8+Pj0dHB4zZw^N-zpYZCsmttRwdn9a7|jVveLYwJqp1t~zqD`u2sCo`fP)8$MvlMJ z&%gDADrTz4qR1T}&|d`WLc{Y+fkbeEjfD0P35YFs`}M-`t;NNd6rn44HkLO6;=P!9 z&R_Id6H;uv>5qiwZDqXqyp?2h7VgUH`QPX_SgLe3TCX}ZtIo20KAy4o(7a7d*(!wC z%?2keqA?bsLo|a+LuhzyG@^}(d-qT=$eM}Xm%ZtOTOCgQF&CB7u+uq)45IN0q3=PW zGkZgFoeQq!9hn(9nQ?G1ak98ay9o>H9l!*Q7z?@5Dlsx5P0$k~(wNv<*r$jF%f-`$ z4rnRtAw*f$PK=k;4Nt=kLxn?oDx-E4fiD)~+qO0;o;`0j%M-O* zqP4Xctp62y+JD$Ayao$8hREDr=N35zw|5y)Dan0O!n|)y=7o4x(C;A1 zvNtvA!JxN4eO0IZCO@qr7#C9{2H|PfyNxqrD>Iq?jOsD1(QVV5B3}*}Dyv3&!6;Rx zij%PK3k%(51p4mlm0U<0e-0N{uB6$W01I`S$WOgk=HHh?$?b;=y479`(`Q?~Tvl8R zWh~{yJeR}H)OY!MO@<95A!pCUJrL_?fjEgQYA&#Uck<~u5SJCj;Qj|Q4=pz+5IQn0 zP1bPy4Y<1ObaxEVXK1LSLza^lgj{=4v7min4T#3d$xMHPP?a5w$Y}&SZP5i{oVaS$ z3rKs?&7E-|0nEPU?T7N>rB`mY-9#$cSPx=hLK)(Ch z6nQ(78RE=okOECl4u6}wyJKA4e88XKl?I9gbZWZVQ)IL#~4nYn{ zX`+ln?%^X6TWf3`on`{lV9wk$7`BL1-4x{RWK6HSfvi<)JH`;(EuH7?x7QVS_dDA? z9YS@Io-}yNd5|x)#MvGiCPb3k#zJ-v0ee@JAAu<`qU2_hN z>XY1Ip1Y0ZNd@1TfHzHu3jKmh2-0uV&1@;kl0k7(QJ}+=O9H(huD*N7pgUNYXPU%Y zsFB8*|5N-1|0G=SYnsHQ?N|dda_fxAYGz93mEc`1=V1TDW@nCMP4LrNTI0^ z$8l*G-pMxz%41O%a*iS{%oU&bJ@Z;dyN>*$DZ`V(q{vOD+%+{cjh^SZrkWj8%=g&M zrQ?!si01G}UsA-c+5i%Xy*b1&soKnMGF7iYS>BNIZ zC1q1nMR!M*W{n(oa}Y=IJ=v<+U-Y`T?I}gFz!`)DS=OPRram&$iY)?tK_AU|uFd}z zmAIQZA2W2!nMqxfT$5{fH9Qt-{R(IazAU)HrTT~#HgQ`7!CIPi785&>Wdxvwm_iMs zynfbdAC+6f;Z~1*U{*3hEmer0kk!DFw*;(Y0eP0SmC{-nGcz^=@j`a_IEDm0;i>o6 zbH}mjijWUB!u~d>^j2b&LDE-GZ;MH1aA})*wxuQ#3>(M1k$E$-+#DX<*w)-_i_(Va zHP)=QWQQYNw%DGi<4`x_q6qmjEirgMDasgvuB}0pkuJk2ZCa@8}!x<&8lFOCgh*1GS z&NBh~fOHqKS(zg#VgXH2PFJj<0Ohr{tUs4}OrY;O6mhPce#3Y1IK`q_m4(k9#!&F+fP4n1w}%| zR~3^=uIq^hePkAZXCyTHER4>^kU=W6s~|Sv%FK<94XtMG(qbYt$Co#2DB%R3kKI__ z!5vv8#K(e^p*2D-8E0`X9sVf^kuDTRb?i-du2+&H8I-B%0(^{FGBoL}P2KY6245+~ zES>|Ba2^%Ki3SXt8foN~0lS`rP2=GaSb!0$tlB4jfh7NSf6e&^1?1N{XZo&LQ8Phe zUl1lEU%SAQg{iiYCu2u8j1A8$FFz>PpU!H*VvTv2dbC3RiGpb)pviXU%QP{M2Kmx~ zw}`kY(I#gk(Z2*zEV1!&X!GrVzUqanNL0fkpOy&TxHoswfQ@FeZb(xm@So0lTz+bH zlv;qVh(vTEeKB(WnTXivq?4Ng6;v73UMqtih@L9wDRl3&Q%*DQjC+6@WKUyInF{3) z-7leXm>FjA8cIno_^A)?5LYBdL%{_@Cwr(`wOz7JP|%X}ow&e6Gb|a-#nO(IV$Bjp z{|AbZmfJ-&O}DbkxvDwEN7WWr|5SSMT+M(3vC>NL2Cc^Tor=^B?%EiC3%aX&#$Ckq zM2;YLWIi5zjY!Ub;&7*zJUULDib?XY*9p^JROmjev^*#((d46qVN)~b#bXv@Ww-NR zycyjD9Lyg$RHtfz!v5T@UmS7dakU(mGaSciS4vyH*3i{0j&I5%1=4g|bnW~gyVg<8 z&nS^^owsoCcAU=_K-`auj=HJkdVXExVP1V8S+7DW+jPF2@(t^y;nS|2Xy!??c5z5z z5Ayinl3Z70o+?W-yf~}!mkP;X)q8M5>8Nrb;&-dfw4P$Q5*ex$F4~b3#O!4mI{Nqn z$Np{!SZ|{XHv(Mf86ZmkTaM=s7gDqW+`Rt>O8a+3lBuLAizE;K4!faK91)~(2~Mc9 zDxm%urO=hXy#Tbo0GN>1swu?Tt}S9sv0v0D`2F)Y7QcAYUASvej3Y}d>SoaWgY)s! zR2$T{FqgHS6`5B|2 z#3~kus%oa_D?=4#rTX@OlVW1_Ii%`0udWG)hoZje^gA;30Tity*CllSwfL{WCMIsi z-~8jn#Lw%);d?Jk`+)n-?Hs$pp1@WMgyxilFijPO!pYP7Ee5;vKWK7SvN!}opbdT$ zXZS%2caD`&rT_5C2;5quceHGpWa`@&m&Q%?0WzhttJ&1Dqo89((@=K|*Rtk8v8p(! zEJ360q=XAzMub_5&?xNQIFx3-n%4^W%0d$@udki^RS_$ShlfJk?iczU%=Q;6b7bg8 zu{9zdv8|(%FOHs~=L?@Xj}pC&+M}}ocdh%f;nRx&XYaofmU{*x78{g*8=1G`x!{Pt zA`(Pw*;pRBQ>8oe;YOv9st-EnG3?19Rmn=5K0;zT+=h|su*v57yuZ!BiRZ4< zv-O7){LUl8`uG$VfI_YcK;Zo!`eJ`^f`6nDMd^rtOl92S1@o-rl1tL@G;1C&5ll}D z0C}7k9Xfn>SuS{=zY{peg3|ZIK!+wrpx#H=V`RU5+i{R-rv6*f^5qpBYxwYx- zTQY~$2U}lvK9Og1BxspgCG9)dHfsP=TW%-rtI3Q)OX=Fa7mZjy2x#2-|77pqk!|u|Z z%|IQ#$BBdaGxY8myTL$#i%8ViReB+LjllJ{OY8a|A>9l*lrsMzhEh02sLtSU-3-RiL;yXjYzDy%0j z>=q-&C4bc-(MoBfy94YOP@B2c!S?adjd8H!siFEV$`qR=<0*pO7hB|5d}+wr_A{EA zE_%7n8YT3{luO(_nd-Uwi+ZL0_{?(b#%m)R2RAP%)sn|%@-tc4%188}&~3B+FGA(; zz^ zX$E{q;6V?9`S^Yvbu|eON5yL$nOyg{>^RD5se5@FTC(}1VajNE+KhGQ^dwWn8B2*$ zvnvk|mxO4C*zQ_p*xGQv+6wl@uVmJu3oWg^l?pv_Th|uL1UYs%~^Qu2*J0rHEw3&oZSdv7UrpjA&RgaaYJ_I8;Ofy>c_A z+-!Fn*hUft4uLP4HcR0t**`+< zZ)-|#{Nj8Hz#Bb)rqJIGFa51G{mYh=R%F)rka+|JGJ(HW1UiC222sO*kw(LmkW?ow z4K1aPb3KcNKJhgWZJfI(3!nE_D)8p}T6&5@7D(bd95BS>!f~|Dwez?^%nC-u^f>Cm^FEyC9(a!`%14^5*@ zWhNdB86y31_o404Bq-Z2dY$Ak)0B)h;KJm@0J;&<35mW0_dnKCi#*aOqxA4Y263hG zr+;=7nnn=8ddBeIBs)=9(jd__-BRpUdUUH?*~f12NF$ch4iv=+%RaS>>Z!Jry&U%6 z0&`j@dr!qI*I;)jY%C>{Hdxs)x*2eOVAa+^bUQVR^C(UKQhFYO0IeTNU}vQR(+7>y zt~M^dgw!z79DKfK+O-kGfY}2+h(4&9N&y3b1DAM6tN=|=MjJ-3Ah3nbDcP%uY~2%w za$tlWNtX6mM%d5^Jw>Trk$I78_72%>*S~gbJwB;a-9Y={%Ui^#7EX(~4fvA7l2EFo z#fb&~Q$1$ZsjGh^q4y-cI}c~tI!GHiy1Rq3U%K0+Sf^DuOvCinPWg@I!SYN}Lb6&# za#N6ElMtqWX>#9Lt)X4jX)Mv=9Zy-0ijm0TMX4fuL16D4O5w~S6q?|jG6?@gKG-Q! zzH+A1y3i-OlRJb9rBu2iXc8aRWHM% z_A$;?rd#6blw_gk?)1JboF-^GbCobQrm{bU%632ac!O}IarA5>it%vpvtGm0PCxCv zc=v_{nhFXaBZ*}bUb4%zp|$N=edYjUJkJsLTI&LU-238x&@c7H|>P7jmRPSIibhykT z-@6Bi=6weHMp1&$&5PJgK0AlZHu|L1eS%pFqS!t9W=2MPkVV-NF={z!oczt-9~_5bNM@%4KEK}qJvA+ z$*1D`3EuoUDdilWjS{8c(pJ;>VcL?|E{03?tz{3#-OFkvLt1asS5abvAk+fQ>Z!LP zj;kOK3bVwUgqvc}9oSZwQAH?}mBJLyrgJ-|7oY1ZewLR*UQ-~eVGocZ+` z##Dp^eP6mQk~8R$yf2*o=2Lb|85NyNwgD#}^!>d?JaC=lm#NRt`SX@(BoY{G@CK5lCGKjHLSnP`kAr=O!EZ*62AT|4EhU5VBxnm z6f-k1HM0NzqJ>Pw8JT}95m-!aEJLOi2H`I>Z=@S?N9;FX_}U%AxS2`=Tr4fdwvw6ZaK&@9p1ShY$L9@Hu8*?M;lzbTwh=BvP9qw; zh0b#67EHkQYqj$h6q)C(qoAV>=LYWMmbvE;mt#Z&GPge4(oe2uJRa~4XBG)53RuaTM~Qp5uCc%& zWis>gPvgbEu?E|YxWY5QDE9zZ<8Sxi{54+wPe%Dq(2=QR@sGV0f>3M8N#D6WzxYpw zID+u^6GDO`C^FniJRMHM8tJx4IyZHCClN!25&sqv-%QpgipJsNIXge_PI5d>X1={0 z9npR2OEE%s>F`%}bl_sNr8xoab!fJ7BN;--vguHFGNk8Zz1aUY)|-5tT(E&H$|g?uM9`mHV=VY!)<0Zzmk|)(1)m4RatCY^d_t>N|O7 z8jk^zHHQA;VduBWNx8)W;yq+R4{i^wg6I+AMRbJ*HDNY7OA9}#__bRqxPr5Bx2!V^ zQ+@COBnwih`hIv3s=hVXhj1sONrZyfsv&scwlH+e{9-{eLH6Z%UY6@oDd>ByaKBaC zWJg90;mbu#8YPO)Oa*%^7me6#vFVIIxbhEm<$V;pltt-y4;ApOEH?LqZ$|E&RlIcI zE#?on;go#Zl;0lpkNN2YcW2u{pV2Yhc(aqd@$X`_L>}bpFJHbu_fN<02R|7Njq&yN zYZtPGAq)1G4Cj_S$7C@uqX=C~JaNcgQql>^a?3;65)vBp_7VwmNg;JoT=2z_PExcC zL%&eQ<2*X>uaMP;az> z-L%w9_A8i1WxjXXZS~3Mad;*pDO!yhg)LCEroU9cG&+B*cKbSKKQ6!Q(7Y^H#b_{j zBmO%Q0D_Ez6w1E@#ptwZ=*hhtmngbKc^90n^|J(CM|Se&WO4Ip-uh+<3N0m+d~tl` zTf$Wr9G+fPkM4$92fn*Ry@VenzL0kRPSa%enDHQ;SZLpSEI`%DpuA%_2(`MfLvmr3 zWvcvoHS%McOCjV~o$U1GC6ufypQ<4y#DjB3O+Zvx04z9`S9lqWW%B|ZpK3xH#5-_P zLRX0Y(qLZ`rG}bYfnSLoW;H%1DLOk(>7BU)#i5??(P+Ez2px!2Qdv4)5 zJJw3W1S@5R!LgeY=|2nJ8zNUGcYsr+1Dxt_Re}Epr}`%v8Ll28D*9a9WMT4$G_vBJg zAB(fEN8@e>Gb*7fieNZO#!U<$^QW6>%qvk)Jje?a6)8YQ;XJf<(4rKw(k}BThikp2 zdJCpwP~w=ea9b;b3mcIHu}M~mGxlg!T-|-qFuAIMFQ|Mse8T)b8%>(Hu=$wO3U%}y z+{&GR;{h+m^Zs1{(&DP`O%gX~Qod*@!%NGYsY{q`?$;SCQ70k6$+uV+qe$;BV{~NL zsKx7zW{OqIgh$~-aMcgh8`j!$qw-XNqGM6l=?w?HAj%!q>QN*{vA+`eGPB^0C_g4? z!iy$nipfdnQ=x%q>aDYRfUhZGXxM?+GmPk^YxA9?-7{z*CbK)e{aUu}TI!;7G}vP` zt3L0Rnr$?rw_{8C@&t}^zHIr#= zz-kd-n!bVC^)28td>M$mYHGt%tp++6%4Hs8%p0>RoT1_@D>Jl#fB^N zATqiZ8CD=!4!;s!X*Bk5T^P#r>Pnyf!jwH*vU81gUz8z36#h6KX2v;G`!kR9J5f}t zbYRs0kV`9oNBaBz-@nkyKhcVao&jL-?!R<#h00cnN^Hp9K*zgAAlm$zYv!h9wNRIo z`V|7g)e1GfDms);6z9e+Rh!bz_H}aJ5-)Ji6`5vwMdQbh@5M5*_H;JAYN_7K6XN!_ z8Asel>-$$e@9tl=Np%>J>r0X_TVFZrTahWLq7dar>J#HhX?Y&^63I2KSQ&MpO?1Lo zv1;>1|Ekd*m z>jc3AiF$S+dJINtQg)_B0R7-|bk=zmKpM!BCHt|#D))8Y;RGlQ1U5j1GM2atj z>L`?hcAgPRkKkwuhlx*BoA7^5m&^y5tIsK^ARhZNJoPL8nGiJlZs0 zj4T!#S}(}5m?sokcB@LCF7j~KzF{8!1R>;fU{qS&hLOQvpjuL)L~|p<8KqhJP5U;H z5Vt5r(Pd<_Qq>(OnxXPZxETh9gZ90tvfzOF(qV(F zY!mgtDbSCN39#WX8BEdXg;@y&p_fS{1mUd8XE`N{OKTb0s9Yr~M(b8Xq;eu=hZ+=F zMYh_K3BR9ar6+9NSdJ&`IpmR6aS|VaX+fN)&*Kc%oUQ1oM#o&WDCjcn&QX%u&zDUc zD$TNMCU9Q0cS_vzDEe{fxxO>;^tk~VVzfh9sd6JNDhA4Fjt8&&O;Lx@7S)n*z1eAS z7Ne@6dau(wJI&ZfB;bc7UZeJuk;Km@aVI%wS>SC)(dEw1GiQQSKMkd4ys@JA^`KUI zx3iDmGmWj(az1{Jz`EOlUMCCcsu8!X?PZXhW9wz+E4!;Gj(gM(nU142#%XT$w$R*N z?$Jm%0y@#{j9ktnPKb%;x+NY55 zBOUlgUmt}vwuWAmq}j5T-Yhw`$GlIvz9sm));~XuTC@e*k?GXga`iTTHV+jYGZQlA z?f4VLbN9&F@(}}hxDL;SAwXUKJ>GR{r(`O(wM-dh>N-O~ZFOR~;x)F^C5idV4#-{X z!w%xWZs2kZB9A)VF^gI*I^Buc6N1ba5h)$lx8xC>o5isIOzE3bYzrTNl%53;`v1Kq z@qY||zq5FU%0IRJze)7FAV;aqz;IV``oVr71T65;FNk#3?&9s7&W_F+l=B~x93!no z7leF3UrB1N+O9gewhr!^!G>(jB2Y@0f5H!Zadmfoz^=67R^1e^j3Q&9=^#OimSH@| z!B3AL_rr7G5R8Q?sn0MEoE?wtHUY<_aM4XTJ#gptgQFDLlcOIstBSqRDgsYdh+C=* zWVAFWKvlvF*cTD)$j=&ulI(PX_32l0HHtz~9Px!&XmZIG1*>qL5k5&m%`W>cYls#e z_7QdfoY^Iky^`9dP{g{KvQnZvw z?V}t~z!=W$jP7(8%On&G0|6MGHfWGeMwh>vD>^;#N?`!lf>le^LSRK9V(6+o#KEQy z%P3s7SAmNsNi6MUIG|Iu8X|lw$;h<}4(ni<@tt(AcuQS6stt;%>}>;VolKEfeR_P{3p;@P+;Vq5<0Y1g7Xjzbl~=PJ;h49yhRLv1B~hP(k+ zC&ZN>)4+>ln_~^HkynoaZ*ri6l$|p+SA4njxqd6*=ZE;p_LA`6JhWQAD*eI9jxDI< z0aGy~La_dDCVK6uPAKg-;1nDmB^0g{cbuB0IUlOlaxOTAsrV?HhqGDQ0}z5q^pP04 zQ{|~+dg>1;jqJ)Ruxsw}q7`G-L$?uHl>ixQ8#x8?l#H|V3!}_m-HSK)Grot5m3+5~ zy*!n~>yZcG@{|P1jSlnV1+am!ORTU~rNLdhy%8pG>mkiEuK;efE0&bTL zo}4|ioMKG9-{XGz?48Jt1rn4IUU}(`{Pyeq{j+WmRj*ZOl9|6p5^|*JZt-IJa)~{6 z%7i>#+9Dc$ue8-x`Hc$I&-SvFLLfnb6{1ralD9)C1Lf7pHDdmWjwh)Gt|^d7@Vc*u zwL=KO9KveJF=W^<;t#vt>>Q7d861^pbb)8#b2xZfiH%!GhX=dJH&^=7DVBn0I7brP zq|o$0dKups&=Dr>J{xB0rs4D&0ghgS{_$;ob7gki1;K`Z@AA8Rp#J~yZGHzCFL_DH zK0f$Puv=YD+3_Go^&6uvCgI!;zD8qj}WDc;!$SkC>^w zCnioII$W4Q>N>AcrzmsqQ4-asS&`@kDIfI9psVq`jEix2KLMJw5|cW{r0Vu#0{2~& zMR#A0S~`)Ek8 zwmtZ)xnCRa<5a-h9+K0DSupN_JUOM%wyI|q_#*U}We~~vM|Xez$BaO)&%RhP;FW&g z+MxJvuk{yRGx9%pO>!6%#FHoAJ?yX`FSHE~G3NG6@{Mw4u8GOtv}VGuGP4ZIha2Cq zU!KBbH<_jQkgC#e3c^+n*@}$gl=;E_D3a*lJ4gz!UZm9Av3W9q5*pCAt0FEwyK#gy zGj>sZ1!lnC6JAfI}j4cz>AUZ^VzmFqLfHXuZUeCK)XY#1Pyzg_Iix7D&gVWNS(x*t4VNYKYZcOV4`(Iv8TSKhB+*-GPQr2p` zaq@dFw0_-yv83OhD$46WXGApL39fAOCG49#u(Gf_2@IdLV&vA66Y_|jJggsEBW;v> zPp|oPBL-^CP>wB0!r7XjhymRoe8nv&;^tyI)Ni$Jr2DyVRm%(d!Onfw7YA_A|S0drrI#HF# zbL3>R4$&W|nFjUg4G`rTZ#;}g2u1v74JBYy&5%OL(cQWUnfw`x%Hf%XY8#SEl|DizG`BAeF2kOKi)GK3z-(W0>}3*(A;d+^99yjj)e}p@H4>X0O zL1qq#mAhK-xR0MpfR@?rWucQ=W8||wwDop=z_QL&fRQ>w$9{orr5q6iq{CKF zj>T5K>53wWDyl$JC_``(0lrF}W@(?64xJttjC$N8M~(?hD`)qJZP&6>eu+4g=!K+R zQ<_>;2Dye5qq@k`LA&D~*%<|Ngj2*0J#!$AwkJ#@?Hm}4jh=ah43WXB-Vb39LEao> zZ@!kZD?Ez141@YNLuoBl!)~Qj4>gIRW|wx4>-dTM%HrvGuI)N>a&BVdZKq_vay^?A z4IFq@;v0VbPv>n32%O;F1W7)FnX>vDkhkyVrQO*|IaGM0nO%=GjEa7uwH5gS-obE^ zwfmCPxBC#eu3x8wLpL`27V3I((^9T$;^t$X3)Y48zkgHEZyJ13=7Nse>wqJaZ2^l# zV=?MH&A9908vn|gKB$VNujLdR{E?)&-sdRO{uYlbiuqx{)&3{N$nVgT>}A9l4S3@= zz?S9zs;BtJJO2|V05&^1n;HIFc9*22?J%bT&%>6SFO(9vERHWjvDJ^ayi3Km$DCLo z2Q(-b-wT|DOn?odKB_gA`zG9em)i|Z?+D5LDC*>X$8R}g4GA}^eX-Hu@sP3b_L2>t z!ZZ4C{OYpG&tRrJjbE~?+d4_K`(}*BoM=|&H34n^$G#Yk*|o-OHH9E}_G&XrtX6|& zr?<=JBBN(YM4;5mVS9Mu*iHJhCT}~dkKJ=^x4B9iH3dFyMD&cN6K#00{aZK%^xkSv zkTl<2n`LRgp9@t3DhR`?Z4ugQtd>J+F6GtJ`N*KTum+#NfFD{Ge;PHNU{#K6XjHCR zTMT?})U0xJO~%e&Dc^qtMcGlew&duKHzWJ@u~6UWx#pl835C3dHS2yF`_*e@<3Wlj zRE@=O|tJV$o#7u{$1f7lOxTIGPR`C*qs#J$AssdhxK;+=8(tEEUnZA0V(!&ULK>9Y=od zNv0z9n8vYa?CmBzD8hcJv>7uQ&Yz>SDGKCgZ9$C=J#$+rC+$56ea82mtO4-|3fsR1 zx03yB-ZF31gtJ-ov~S-B7Hm(Hi%)1S_7Vs5y~a2_(<7J}GtkDl)ZNntB;PptHD(;U z+-)w*=S&I@MOh1FIBx&eI70p)W#u+ca55i{?VMQO9ehbFc}rTwgV0rx+D*1MT0G`w zcdYaFwL(WdU~+tCpJ1*K>ab~lfOt?3q^=r9U( zUiB81+Ayn$%qv5&uDXb5()`1xx8RLtj8__YL`ul!PL0p9Ohbdg$2@%EH9?mWaoB5G3lO6CTlQYlQ zEK|ifFF+-5`U%KHe8~sWEKx}H#%fGMrEZH9)d~n>HGD|TD7S9u!)VU^8WF!H3(&+@ z1rJyTb##xN{m;g11&OZlI1SNv^dz4ck_jXU_?iQd`TK|shA5fPE+IEDN zxoje~WKlZylrvuMMAZ;W_0QtuU)#Lo*%0LBDie|Mk(*F=yRaCsFoJy`KX0oF+V|o3 zJ9RerCNV&^1c$Fxbu~Cv>3rnSWjPiAJy5hw|8RvGn=x>QvA}JuZOFZ9A3W#Y?zHgg z!96EC7z*WST?W7ArWp!sQcRc1M#Fx}voINUi@{Em-n>Z#^BW=li=au8J^8Cvcn1S0TF$a~A%6|cR^ zWeMidd#d9*4-~5VM?oNrv9PTF1m0o zqyf>;$U#Ba7u77rVzGx8&=(6O1(C+bzN@#&zMxubI=ooyZ~F*TrPFD4?GZwH|MUU- z0qeA>0!-j)n~<5B`K!}yD?QWZYi9;fa|q{-Ulo_kmJQCxv`YbGkV@szv7dqf*d%^p zmIJ=Ot!kil7tXoZ0_rL#!l1_`*3ymEf?XDiM;^**C{nm;w+rCx<$9t-ux6lZp?eBH zqBA7KIzDl4B{Vo3)(3%MKqfA@F|kS65gbueS;2h;zw>Qf0i6{-jBeP{ccW1wu3mWtYKrTh#e$VP~qwqlRYuZ z7c2f@me=GnoK}riX<2OazCKGak_XVYqUkQCfi69pZ`u5!4@RObJA4k@P6tcq1cz4z z4{v_fVK^rc<3xk$dRgeh)R1dN@Ak_`9%T<0MA><_kZa@gVaT)RRIjA@QfXG8`H_tK zRp(Z7hWEg~HX1sfPuvMRtx?JacE60?`#XKe+mohJW#ru9s_Z^x3gh{B$KWxM;NtuY zJTbCX8=MfE15AEJSeQ}k!ZxYfCBJctsuVbp4+%l38B(B{tLckCFMQ3DzJL`KaSUto zKhRkJF>cY=|I*lNhvR0PHde`KPXkzL|5t39>Z0>N2Z(4`04x04!qD zeF)2aw&j{k4l{}t&G)5h0*7h=U2^a>P6)g4kesjePOZ-16z8%0 zoWT4K2*nub6F*UP%6s7DVH8n?t0wrH!22t1=M+bS36Sa)GX(geDZ`w~)ETJCufmK1 zA1T!2H6!g$&O=}l=W>-JqXdb}17>He4WE^`EV|ioi1zpQ2gtZ+Us$Mgr{hY)uunf_ zMx&XwOzy0Oc(Cv1aR$|r?qA@%_V;c8m!SIWEu4apmA4kNZoc%@q>*($@RaUms!K3fwdiP#81; zet$o5{I53cKhny7R^|S`PkizWG|d5#u(I|KjtX(oRd?efxtI)}>+0{VkT`yjU3D0% zDt~_3Df+qe#KQ6L_W7u_GiTv_qViaIy;)PM!t&f<*MH^Ch`}I}12*s}EJOc0cm%ZJ zb=bCH3*XR1{UaIfdIB%NU=kTvJ_H+Vz4n}|7XUk@ z5lTQHB9|X5b|A?QUe6~lVZ{|lA+!fA4QhqgmJIiX)A?ln&2Xi%_4!c4>pbRI^TYq* z|6%PNqcd%@tV%y1=xBHyky?gB5{f#ruul&yStb1Xu zx#sL*NPrUs18P%ca5&2Lcw{rV@{kGc-uie1<;C@e3r!nb{A0lIL~4^Z+M#zMBtStV zu{3mRzojY#WAV#t%1aI(*n4!Mqy)!YrooV}z{~h0FS{NT)S{%g+>gSQVW@o61f8CN zhljRhd``}*v-F5jLZ|GEXr_sw7^0guC8dQN$uHs!vLat?$CL>l)d&z!oY>}16`xAgEw`U8dY1PS4rL`3jw4Y;xaukk?JsjCAYqfD= z_UWMfT$qx)ohF_pO}3Pv2%MhhpJEonc8Ex!v!lJ0PGbyyU=si9-9p}-Fy)n*QJzsm zR^^N+-X`g2iJ!$}fd-~2z0)|s;q`!f;EPM)gVcVH>@|!ijse1S_&ehcxhrH24$mp) zg&E_uz3%alyXf<1cm6t8e|7f9ACvhlVWW{37rDvTeX+$jTER7aT{Mbb8ZezpAq zAp4mv)T@%&=#PRGRl!kSXu~}nObgT-C2KsEJ|%aaUCsMOsb1DG{5-8|4+yzt!Vzu! z*4L++w<2ix{7}i1M6F5m^;8T@pG3>gYX{(l0dEmkx~{M(mFH(8kfwgR zwi?~6rUiO5|8aYTmFtAHeBt; z;t%+*48>fsqQE5E9X0}ZAJr3?im*`g->Kh9Z>V1%2`gi^$*Oj@3xges-bC3)IxG?F zy{@QmzW_>}m;2)g43x=7TarfPB5}Ca6pjal_Qp=DXXbmkq%?=?tM=U5_RxR35+9RU zxGdowS*ETz)!a%~hr`t(nq@k&sqGJ50i`6glB2&CL8&~&;s;q&Lq$(fF|p^^0Ud~O z^YCo&e$`Q?Z5h5(@zdRq%w>#hAg(?;?n#YpCqe`Q>3um6A?)({sOK?L)rR){T17Rz zdie6Y*H;is^N8ZZt(yj1*t^=QVjKqd%6{+}`h!&Lo@LW)3R&-57L)^Zzp4&w2$5t@ z+*)BnccM&Bj(n|j@ms8!b~t$_ld^W58~rGBWpJ+Dtg}Z|PXB3#eidi;4LA-90%uJV zc6s%-ApVTQ!GlyQ|K-9f8bUix8W|RBGPG_l90kKUTajjPcK$eC}6@s%;XQ zNpgGxTvAJSOW2?lKPx7O;`|&xlZMxXkk3T(@0x|&Mz6O#_4Po^xt(>F84RrbVEiZU zAvKoR(Q$Mpy-jb>uYchqv-os&@O*a!H4y*H-td1;*nc$xlghK!8Q;gZB4a!oBJxTN zYvYA8j_UJVlIo0Q`#+&J;3|fMo5a|qUY_(2ZFBvCANA_Rngr$%j#9(tc+W{vZ z0|eB!h*Jci97y*N7+57|BUIiO_D-@;^e4e=Ryn-$^)X&IuWSdm@Hd(q5Lv^52qh7* zpuuZ`N&f3mO2sPL6_fiRveASo;J3MMyr6*oUO$lBO3!7!N2wzE;Yg!@w&=q>1}Gx^ z1`h*lxgC@vsH|Jya^n->3cT`O2Ywp<1!2Uixy7NwMt`lEcT`RY)2D7SBhwm_ARpX< z!y>p>@D>tca*4PT3VtS32|tT05E5ldkHio=pY+m-^Qqw4p1@C@mJ?x7+6dLm@y*Bt z!)dWAP)Co|j`FI)_VQ(c!N%ani{?#aM~3#?iq4c?myIy&%U^o0>*h{phHd*e(9R=a z?2BxXj3yf#!Dx>hC*nC(n0d<_XbEFU*X>I}V%{CWU(;x@D_;#h%cmcBj&ytl z$kAAIw#Kxah5Gn?y|SSB%vcqWRHL9`mFVB+FwovGw>|M%uW%nyw$@H-YM zzEQP*Yn||4u_$0;?O1a_tc4`YxVnmcu{<_vBbj2oV@Yl=_3Fh#jy8BX=vMfqht1huDkS?K9r6gIrzr0SRX%H3=y%0QV>4E07?N0zL91PYML61JNKBk zXZY(3A?0kC#|CPb66m6_>=wN6U|ZA771RNEk&f_3b|rKr8tUGi|5r#26bW<#%1 z7?x;=>JhEuk*6YMQOIFw!nr5EirxNQpQepey zP}fnVd#pfBs=XGENW{Psk$y7nItG#Y8@u7wdGZl>_+vhn;8Q}X-l|F0rom|tQLZ;K zF-xHTy78@~<0SfHJfe2P2Au(x^7V&-pL-uG2mTh_%Tu^{PZ4(+!usp!6{W1}SB^te zEQjg?TeDdaL%7)#;s%e=`2+DG!q1u4_CEsqueE?G2)(k^ z_voeZzn$OxuYvuyT&uug6F>{M755Cw5)VamI)`so&YdhOgq_Z#I}wx#*yP0App^8b z4dj-{%r~ZtlCkfxxhgpX5V{u7!bTHqvDO!VYJv@Na`_TBrrE(_CSFhnr4)c; z*H*BpQX8HLfuM?bG)!;$@XLG@&5vDcJSBmx4~QoV-$|%*{gl%u`Yi%Y2*8v*hgA!S!YJQy;oWw>n>7d&fx`+$;+= zabZ*g#s?~6?5969Z~wIQ{%foOW>C!C_#W9pzkkI4oSDR|oox*C9L;R3zjKtMp4s zN=E8doz8B1Xeq5vKf(TR$b>({Pd=n-QJK{ppb)X4P_R%y+LO3DX6aQ++PMl)p~&6` z6HKkX7)l=_HdLxyJpuFTTf}{ql0cY}Sjt&Wx20>JYKs*vqEB0B!_y=txA{6e;&RQD zIH_We18@F0)Nbh$X0tzaA7Lau{ps|n{iT~sQgIn%fXXr|fQZc_Iw-&o3)HZP2^TCX z($}JtO61j1AS3Ux<|OhjU;`E_aLCK|gJpd`*uPzn{8z;PPY?Dts6lp8`WtHK5;^5~ zZn=n+)@1c2z#nK&a55FzNvOIS&e6I=I^XHp7a>}Pv^+<_ zd3+NoUC|arqx>1RAlXN!RpulEJ~Tp&0o(deEJRzM*UJdhhol~f$K|hk58k2?e5%?X zMj0H)-kxaA_^6KsC{pral~f$d)CcZyM1E!E9 zk1vOG)IZV4%bP3Uh)u-6wCs#lAMRO9zSPbfw63P`I8sQp6ZQo>n7`}1UN-j3{H5y<<1f!$O1wv3J9ZGkgk4$9=e|6>MsT$ z9IN!T;-{pBlRU2YVkxt=1|`HLgf-JfmGjL8Gxu$&tGAfX#rrp7({>t_Mb6=;xT8mxpYb;c%WV?+Qu896%d1w{dbi-dTFwP@^8HQjwf&gBW zL59jz3Qz1aR{Syt)+%CT3969diDga_=j?5s6|P^UqHW-YFc+rxvfs$g+Nb666m%&B zY&O;)r+XN%fY_BO2a`)?G|Q2SHL5m#H?=i-C|1XUPclP)OK36_Qc7;h8AfD(<(2 zd7q1_#H}b%DNmWGdWJk9P>a~CGnrZ?FLc437JBjrkoqb#d5C=VcK zQQRxV8Ze`|dK%>G6EP@d2ASfgc}}iPEI&2FJ*3p0@NhCnS@#JOQ=nPBDk&x^5SoNl z)u>BJ6(XQxTe_p$&5 zr|J#41oL=g8zJ6i@l)#alZ8;a#nU~08;gPG01=Zb`|!6M6kLlUPbyrwN8T?7E8O-@R3>3A0*$VmLy$T^OCarNw8yQ8 z`piI{c55&0woYIS{RSaD7>4N9BJGz zgFiU?ot}^jm77Ijg|UZByNt2#ti9d*$T)21=yYx7)yu5%LeXR(TWulE*!8&H;^z!~ zx;fU9&Us5Pj^K@+Vh|K-3Z-8N>kJ56M_=?4j~6OCVyEHe6f47x_gL=_as|W9 z18%Mvq9hr9K|T=?X+=DcIM}V>Rl7YZHf5Fk<2r#mIQ;7w3~{K+rd%)CNMV0*auX-t7qv$0U@L=`zC;xaE zvcpt=++8>HW8C?-%rR2bYMMmhJ2dL{Uk+jN_Jun~bw*sFI<%KwW+V+^3+wTAzL~2= z1-bZ0&NRpl#OF2;6}Jm_8Yrf}jZZnNNp2}k%a&rxcAn@leL_%M-bOYTte{51pyO8w!CI(}+CN_N;DTJ&&3Taq z_TU0ck&z~=&~|-|dgqM0Xos^>C#zHsyaRUKtr^C+HT*oJj^_%vx+7DFF7o_Lvmv%8 z15kXS(GT*$s%WFpe;{45cSQ_AF1U73oz$Bo1^g_Rvt+di_zaqsHz8xzN7RiWLiX#n z??}D(J76?~KcQ|)`aKBoY?j?)Y-tDHfGChZamN$Js|58xcOGw!F~2w=QJNN#VHQ_V z9Qy9ZbU&m1s*i1wfiT0Nb^KoG`U2kJ$w+eT`PeM}C$2PBL z>LgVNe1ZUDDXycAoMR!Cy!+hGrJzxEgzXd!P$YOc@n@;DF3k)Rvunrwr z_EC#BC60pt1XBs-NO>j!n{GX*5==3>t&j4mv+tnq*J0evQE8N;S|Td^NI}Dru#9qY z&O=^&ZZ*>py}+5dHR|^VJTn%p-=kz;he5yG{GGI3D31&QT~?#byZ4@tvtiutoB&N~ z(gIk(W=xtS3|z<2DI0%Ym0}EkY#L=peCrKu@n{t;k*r=|+6(6@no=_?Fslqyj`0U}UAeZCt-~a#7h_{$70VPFgerDF6@#pZ1 zT;0B`-oosb32Q*F$^q{tt*p&+()Ro*Mlgm!P}0HuaEbOf*16Q6{TAVP9hy&LsBNdU z;U@#vOU-mt6l2$2Yi^&=qfM-pWB2-=n?sqoWmLmTT>JeunXV5;KSW!*Tf@zwfImjQ znT~v)gUva$xNJ>}ZFu#Y&aA;YW1&UQ5Kfh;yLpkbu@N)|ODUUWQy z3F^47HJdFnPrEa-SE2=FFv0LdSO6~M`tbZ5&|2`lr@>d%mTI+pfuEevy;%Z{VYs5=d?Sow7Ao-j zrTtWVF&d7j z`q=5vAFz}*1A>kba=JY{Qh7%oi}Ll9ZSnD(RCLVCd+|3v)1Or;ok-KPLy*VXvlWv~@akrrv_h zA+`2$pk|ewS24=9{mWHmXiH*#mI3F@uluIN#<-q_!(lHPbq5CL=>&FIq0Is}R#;P< zhV_Wa#7;Fg8kGneb=vp<13JDp?OoiPSG%erNb(|M81vrEuRP@Y{SdwqesY8BQLX`I zD@1i}*bWr-C#YJh3Gh03@VC=Pk0S!F{K#JW^slK}q(&!kOhu@F3uM8Zc=S1#??5-; z#8zJ3>YT+#ViE~>or`__0rzWiFqt}R&M!*Uq^8Lc!XlmwLmJr6Q-N^^w7DqZCQ{2( zP1@ZyjVmY#4*eI_a6K~Lv_?vOkR_}!}(vvQJ5GI`raL=Wp3#%&zl!{H^kXZ(%T@i>GH!-NofaSd25_8);x^_rMl`B3DIM-~kB^ zj`oj2iP1?YQ~TlA^F0<3+@H9?8;?aCH5Xww%RW`N7^5hzUgXbU+>^qs zqK{6Uvt|Y91|L@Y86_%&2R%-SY(2Y5$skn?!)EIWEP`zB!O>OMeY+85-M9QaAU|Ex zQmdt7F7ucV8V2jDle3n3MdAZw5S5^ja7r6t#UyIh(x2ghp`@}VZ*E7Gc!Myp9(=Ph zBb_&EkSlsMAyq>S0JU?y*6;4LhXzy$*@ExxRNkc%DDwiGiJ?){7g(nHusLqtz=m!2 zxc1w~)n>aX)_&a+H`~8DJAfij7GKL5?>T@ribPmnN!dKKm>tIZ{oo0m@Y^)|ldBNn zR!!wNH8FTsHG{y7o#`-)dEM+K=h$`q^-tzhe+{tt-$zUT8CLlh6ZC%? zY8B7El_t=*fLel#0DA2a;beQ8NGb48%!FDo;t4>>!@rs?R6)nA>)VAst`we;(n*Qp zpMP*C-efp8BbE9}&1a3LU1eS|-@Q#w>--?DnV{8MRrA^wzXD&L3p%l1XS8qIN0BGf zGk$Plu$XN*sZx2mYyE-NAK_}xTx)@a<~|iWEZ@#~F?5K4T2F-r^HjDsYG_G41lQUo z_5&Jl0H6o82 zX=`pK&=`3+*9IkSAJy~X0nVD+0 z*4F7BiY`uiIWg}CJ9@AS)Df^w?YTQBhTa z&2@)Sg6j`2^4C1N21o|0Rpy6di;&;lIn$8P&4x^`bR#o{hVML;gp zot#KT{qrCySc(nTq31wKgQS;oF6dq7LghE1m3KWs(a0QO85q`hrScYBx~7g)JmnAR z5FG<|iS+#kX?I1JqxLQVCP4yxcN1a$xrSvCV%ju8A8STNsw;xlXeSJ@Rl}`^&kn8_QhWGj@dh3$gY5_ zz)#y#f}@V`UFS$H81F&Q|_dyJijJ7r?I$F4xZCOdSsjjJ1Nv3 z2baq`H}h=mrMRIolzXM`kmL3jPMq$w0lvRe!&%8ZwniE+g9djASL`VBKVVdGwYa8l z!WHfVC+kZ5wpo^PnPQ;9C5+3alzJD8Q?uPkmAswnzIZn-2-04XQ1S;1dhrxUFVRf` z8}I(f2KP3&dOL6e_BQ8mE-`d%R7WCUUR?VErRM@*dXaA2nYtH7l>Djp#R2a>+(-Jg zZ}W4!fn0?-oLr?zE>pPHZ}(IP{`5VoX%$sgWX>y%wTTB+%TJ8k1|>&_WG_Xh1nnRb zz$7OH93=)A9q0ztsSgO3@)u;ka^fSV-Y=w>{_?V*T-1FPtW_Krmbp18!|rY?Y8m1@ z1X1S_ZeYK&q?%|O?hyT&tIT#iD1HB@o2b7aY<`u!P{8lq4DYvOz<&nx{-;m%ZxFVk zRLt79|2g3euCdJ&&O~_%PHyF+KvFDsb@-?|t;L*xTHB%zX2f>_)Q^wNB-)aFx zVCE&HDiv6H^knQ{n1R04*SgCOIWLyrGKI6QiJ3->q)A)lP`z!EDA0*S{dB?yb0Ox9 z1PR}Uk-NU(b8Rzr11eEQcorR=L$2Z0o=b5PQ|8EA2j?wZSMEKDE<@e-2OR8N`X{mT zdTq36M&nP(w?!>aTOwaMl=+o_2e)CKr7~mYNeQ4?6j!@a$CadaqxKNb7&C=9mr29@ zY7JjFFup2xTI_3dYO09ikX1;q8=69(S`(m-TiOa`^^A^FaPYX2X;{aD$gcT@F@&D2 zJ>;NYt&-H_y>}+*#o>o0_8cHeSL~doRMqZ1e}rF}27WJj)mOUXCE@xC&W$3c^rEsx zmWa0STVcaWJ@4Apc2S5C?KAJFicA)U1c}dk;d{K2fMW%ZrC}rnaGK*3ZJr2*c4>P` zj*eqos%4698NH$uKH)6dKIW`F@`NJ)J}=CQB{M|JrZb>mms|&;Vc!rbIM}lTc<66d zPNyk77)JEEzG`_)8s*Kp=K?0VBby+sc&?6c;6l7BL?v2lPGzp80`&O={72jRR{{80 zN-GK#QgH91Xs;hyI`Y9i???Ocf-pVP@u3e4^k$ zO$`0`V6^oCS#jzOb^ioVbG$M?BzNp}5!&8~+#6QKmuPXXiq|0tT!b=!Sy8J+QLkf{ zdyevI1_q|+R-%i5X``IZWwrXptzno?t9h@r=q zRLFh`Y)|p!28j%?6?NnyAm7_@gI0smXlYs^&8m^PLc-XoPHJJPfXYfFt9_;^a_b3N zXcKl|J_9wPC}e0a(Ix`FMBWiKhUd;^ z7@0B5b^o*|45v2OkC;DotR3V=t+*McemBiCUR#+5H{W8SG^ocb%~X}EOUcV7R|>)5 zH;QcpG8Qd<8RA(Qj5gw}Q=gJp{>6I01!FdnFKP#M!Qj)^enTb3rO0}c5FJ9;uaT>5 z=f^0-)^jO@*{%k=7MN|F)phkFT}UHXWHWkJW#p$w`sLBZFUpoD$gn~5m0*k<%3HN= zIt4$nlRVootX#^4TMKa-Ur2FE$+HGC%b#Qvqghyr#I8RF_(}tgxe=7Kd-4JIo12Cy zw9$u}p-ilZwjyOPcRs0Z40e@~HcZU%s+gTM2WO>B#AsC10I1vy78kP0C!I{k$nC-p zN>$v%js(WP{mFn@Yj_ScoeJ=*wh=ntq~xs0wN_G<kd;gIQF@i#Wc(SD8&s@PGJG$4bxJ7wkr?dINRy~UXm zw@*0PV(A3>Ri$&r;VJ$GNB*T6O@d=oa*XY^Nai(s|L6kb1fzbCg{mHl--D{yX-fWq z!5`1cj7%k*wGrz>SV8`EFc6Or~zD036~ht*ad#6Vgu7k^*kt7b*wZDM`dY$4BdoFgdOmw}4d;6h898n(R)0 z`t-`hHXZ47J;p|0mQSZnmgqTNAH`g?C5G(vbj$(0A-Y#3bdjH7>_PJYHP2ogc3LTZ z8YC8&AS~iC`N-E|81CFa*bvqtB%UfPxt#YEsn*VYsu_Lhn_hXWK3`W_xZRHNMp-X< zub?`~4Dr};$c||3OmqH3k4urpn-2^h>EP?ErzGRsjdhy1V*{CzXFK%{pQr|#R|WY# z74btmEeUcLZp6+LkS0D1*ytX(^!m#$8SUxi5`}vA-qV$v^Ocp84I3xNlbz%6$h#p- z0T9XEi<-d)K&~SUfRQ>+VSSAStofSV5I`nXyIpRce{_*L*&oI^J)u85yL^b21hia; zd;d6j1JTi<5|1-bN+U>`Pn9K(W_X#d94%BZ9aO1!?7*ucV)z*uQ6&k{5>}PMU}R*8 zGVF?@+g$FfG5`SokQj+9s-$m^Wx+Ixq_I47>?S*QgT1skUx};AmAq>97W!<=ETGU6 zT)F8oc7*|K_ZA`ex{+-X&cxHbmYY@_#43GjStDXf13F*7s;Gy04n?@QXCoOJxc%3M z4>rU|YfXJ-l?hIZ?h}!9A?ZE!bXu~pV!Qpo5GfKyvVS-fCMz-|^4!lZ4(&3l+=^ik zbqa-zHt=L0vK`6RlL4w=4)a#59voRV^qNF#_ulQFOnPS>S3dv5N&c${N9UBZ8-EvJ zS;+qz3fSL+-u|DaFJ&u*Z_2JWbsjY(-xgmPf$AV{PbkV7LL>oy5oiMuf9;a<=vH4J z@wj2i+-K6%y+ij}8hOFQy@knZ0lU}bWw@BAXmP^mlI z9eFa*qTj(W$0~r13VL9s!o6IHLMdYnG44BR&IDGi+VXgEwTvm%82VcwqQ%Fv@`-QK zaql3)W042bY^_&n(!ElZLBxzaEGEd5G{4}&qN+q@qwm<$XYpq=Fj{Izq>!}*QlhOL z1!w)2lo|6>cEq#rFkYRYNOPD4lct6IjBSSX`)(Zjl}Hv3`>{u*qlV^^24$kNv=Lg= zkvFDIgDR#;O;m{~qw>s#ngIQ7Vq9HT4le6pG4Ur@@oG6u;n#AO-JzIA=lVhW}&*Aha?Yl?@({I7JTski8#=ble-R0I$(guZwO>NYx%Yvm_ z3kIQt5ac@YgVHS;jk022&B}KmrPYGC`i-v9RGBmCXpr_Cdb#&jRkBOr2g$_$Dpusg zITY?&4fZC!)b_hPphuBx&VSOcTE_Fy2mYy-sq*H!3}N0Rdoiw;0cSbswbfPW^;Gbj zJ?PhrIeP^REI!kIe{I`~BvbOVfJhsDWw4D?hb#%?Fx!e6po@VC&bE_TCIf%&xXIo% zFyclc<#N8%FdynZyGH2if{*r-%}h%m969YPF^T zu-|#cHMyQHQR({U}B(=PzGwL)CfkOPz2R z6qZ8s?SH3P)G};Ao{tdGEA|S zUn6npBinFC0v8Ko!fKTokxa--qs7LE)BTo*{beWM`dzvn-5g1hKh_oKsQ}IykBoxb zQl7a3HU6~Cm7W|&ESHMEfj>FF|0sw&p)}zbO{!9dlA=$9X6O(JekvP(OJ4K&$K3GO zG%Cf2>nrzNr{TYug8%l6;$P;5zo)FfN^_Osto7PAX*FhmXXAnFI#$_Z6)3UFAVV3v z37r06Rg5|;;#+oFfnDn3X-yhSbX-@z9?q_M`df-8F@>1vZ;z( zG%TPFop4|Ul{j*gG|@tO-N@rkNgCFWb0$ml9k8hp3C!Z|rPMk`9@_!t#G&HJO|KFv zE-_Tkq*>PJ|&XK;#m58qz3o$Dk=fAM7 zb0<>{3PW0A^)cIgo;qs_FQafDcJNN?zpMj2%)Sl{jjz`JaP1TbXOkUgN=-K$f_;T_ z+w}EJ6yqX)5y?9BI3%SfpfJZM@5Pi~+@{Gh^sOL(-=!R?TA@@p>pq}@q;E6)BRK!6 zr?|TOc7K_2u6?7L|G9}&wlOpO`bBTzMaT%Eg1`OA&$Mje6*Qt)X=LCsn2XJ@36?9iOQ6Rj6VL2R*rm`HSI`3Ax zzq~&HVuv7ug{oELe|FrfF}aE_LJ2MZF)ue>h!9e$D1^|Y>Q;{A(%yonZdFxkf`O^f zrVWN&eHXXZ;f_~OO5@)~dP<6qQ)@pT%Q`v+&6+%7us{#)5dx#pgqro%>$s+!aE$H3 zt3lTU48?a;qY6kcq?IgRgQpn{9&3cIMz1R;Yx|+AI_5;Pru-HZcrsd^ZeB_EC!cF< zfyca(H@u+MAD0kJ)Ryo#1U4QPCh}!>m`P7cc4#PD-C*P~_e8d7Xz6~ev)^9*gvr%g z=4cq|>?nc7i+~dG>@CyKJzGPq0-M5plK*$-tGqmn&_PG4Ug{~Yjq-JIpxVZ1*tQ-+ zN2&qX_`z-4X!qy?!vj>D=^Ip)u0jv?Mv^V&9Tay#UZh@rm2NP8K(|U{TQwa~0Z=ZUN)$saWc6F++5W1j-yu<9vshM7&L6p@$4w?o;?4UI%Px22 zsQGpr^FW#YL+LJBPqGUhwvsN4#$9=HFu%`!87WkerxuuuK)e4eg$+XuKNot1W}}tF z?Nl&~c!7_cdnSuIUEnCgjmjZFlF8KN%;w~K=4j1S&1cq^GC)`cn6J|f`t<`_m6$`a z6Pal-5~H}(#4uzhpPAPxwgaC4w_d19b^uy(U7lM$kQaQ&2k#xTzCBDq(0fn&T|*&K z2+=Yee2+UHn1JY6N{&y%A1`_0xQ1+;U_w?B$}Z!YDleP~AcD5lBm8HTCyH^;p@#KM zL!G38Is>yrvOY>|of@|s4FOSaylG0z!h}el0B7ADTSkWYRMADedL}&7Y_vvZ1>+r> zjOCOQ26&eB9#(g1^qV~UrNfD<Ms91cf-O{u0{&|Gqc- z&pXe5_nrN%ASjGmf4g{ei0t7$qRAr5(s1#Xk*|r17KJdMZrUXe5Znki0acNIb~g2E z$OeA@2!Hu`o;fum^8OT7^rDD60Oj8bUe~^YAs#U4gR_kn4l86XYzP=?oslIQL!#)F zmPjV3VM7FwfCyACF75dP2C7u%SL{uPK738iDjpT5bOMUJ&yb8CJC=X}{_MpK>0cRvM_6{AHx&W!j?oO~^V|W|v3C}czOm%;UIy?pzKYW6@RA79!F6Wjed!W6&A2exmO&fTar)A(&WE72NS-({gpRzbh5YpR{3!9IIez?W)O1< zS@mA!GZNgPsO~Z=(WFAqUvc7l(~zBc&DK{|&Zy>|qy=F^D}uN^A~)EKQ`CV3$Od~c zS!o?$&-^5>rl-E+KQKBziKBPrXvZ)$e$hD@cgFajD z->R)4OK3XR{8;rGKnOZ4vBLanuzQgwr{d0E7l(+hQmsYno#4B)un!Y!HRhE1aZpNDK#M6nx0bdrL!>?ue^(Sm=)=<=wSEXJXTsnysBSd#UuKM(%s-us&@0wM6P(vRsevH`tPlNDZ357}XBya3H zp%i=?KB77g-FSRB}ooWEH6@xxi-9yI`&Z-eKQ76;lr&E|IO zm`aPHIl@ORH^nU=wX&2L(?v?h`u6AC&AQ0(6x!#n3cTT;^?jl}a;1zDQI$~SCK5YR zU!9hcMDJ-Ifxl_lv86;z=Iifn9O<(oxpShYe^Wo&srz!B>G{~Le=be8OTS+6L&dwU zWH$gUR)voNbuB!4@~*>xtf8**cv4=!#)9_2ZKNN_#MNMKMt2&m5h_+7dAH77`F51M ze*TLteM=)|LcljlX#GvN`Olk+|DKo}{#AKQ#Y_Q71&Iq*R@V{*RdxVGGXww&$t4sX zfDqpAhkrWo`~;)GnIy}}3BYKVjd6?`-Wl%5&kBUnaHXRn(@tm%vsQXOR5iWIX=ss1 z#<1@<*UQ+l*#dlEksK9Z$x zDQh(1TxfzMJcUk3PnuJI{c&3api@Os%i|2&einhX=@AU_ z{QHc1IMm!l*vaij9b7<1x$2K}Po!CI0piO2OBhYCT;wdkbuAZ*+1*vLs%^A6gWxgn za!Z|nv90sQlT3eRkj)lS{A_(er>8Z$0zy0BCXkdc#tqq-fD)sy?ggo+SwT2jyrSOw^q9mHb&}QTHo~VL~{j^qU zq;*aNBK*B~x6pFIbYHN3MoJ+ffdKRmrGSe zi|726v&Vp5JuSvbUnXR2p~jXiTXrdz7gTCCPk2x&A+`Z7~cd-JbsAHopD5bM6urS33&h#0yb|`dy(6WWO?BE%@ z-@o-tI~;|@;<0ZW9b>=29wH8-F^v*r9$tE%XsCQl%OTwWzvh5pf`vKE8C~asashKi z$H|8YX?mr^8FrWWj&G2#u{f07a6)7ir<^P=@~d$n7s6?xAM{bZCIPIStTTi~jSKWy z7pK=7G#s zLY3(@zn&=L#3{liS}-Dla+$< z=DOs^J@v@Y{4;f3z>qVtvtgIEnvTg@_SHn>EBNc51ZrL5D6=i_^kBKQw7h~j;JN9j@Q^emm?s-z$HJu#C42e9 zRp*c<=!@V1wd9j$%=}|-z)H)msF-xg}>G3B4HvjgX4HQ~11o>2jr`_hS`?UyGM1waz$YiUj^j5g+0uhv6 z--Sf!UsNAHkmvdGh^z@i-NOOHotZ5Zvez!ag*qEL4P5AbQuBdcX75mJkA*A7k&QgT82jU{oA&b#6vN+!IYqh<^wI6AYCLxLHN_*=n>B`UtB; z+?k(s>q0zjRBe|7bYVXnm4~fEYt%C-{hnlZZ1O7PF|kM7b@RiN)xGZeCyd|uTnSZC zZXj0L$;*3&+MFwc!I**O*%}b@N0LA5UGXLjA05&2m1k z!#fBCnQJCyYEm*uU*6LBf*5)#g53pRdFyh!>E8K`7ipb9UsY-A)&F7b9k?s)mv7Nd zI<{@w>ade^Y}>Z2?%1|%bH%pRamThgPVVZB^MB92_l&*wxMz*=e1cWKSyi)U)y#L? zEs>`q%j~A%@ECP){TA5FYE^CB;eiRO9DTSO-^`i1(u&^CAY& z@TNmXAr2s<2yVor4`M|?w3kpfyQ?#_Uj*d4Echgo6+)Vs-A~a^`AR0^1T(gvlyG2i zaJ5<>^iXqdl|-f0(G#h6ugG!))%$$K(1a+znEHUO>lvHQp!8C4;E{M!vOOnnfmCst zeEs-dt-7?Oq>`0zzg9|Ncfq6-pmSs+VRO1@<4Wqrr~39KA+4SNUgP_c+7VhulHv%$ zrL~5u;AL)-oKFy-s`C(wKTnN?5yGmlcunKErTc$xkgt9O*8T$aEXBa*`k&XK!UopX zPKqW5*8ey#_74S(;@|x}TN-t!_l3J&dl=D*76+mjhm7L}lx3K}Q6kv+rx+4k?NgcC z8}y~UZxBaOXCeLmtj@coG!`QXd#8GtPG@=@{NnMtc>#JP$;}Y)HaSdhw# zugprSfdnt9+>EP3(ey#iO9nA8RX)v=R(}rZ452Z2=jB06fr2fd=bb9_R*0uy}9hLdeMmVX_JM)+}FZ#E9Y=BvnT9(`_6BnjMr7^cyDJ!*$hR6kF*n zZd(*fVJV^8K0YK0t)FDFSWD>KNxb998z!kX4f1Z_0#I(X3E+LsTG*{g7a=VCCYCk) zVmC^rBe#T?rP;^~Q4ImnGP~kks+xw_~FY_2`b~@2uT;(KWP#FMWqt7rpbrsqFWI{Xvj|6g(Q2jXp%W$f0(;W}}z z{I)DIz^c!Di*4o_MILG)a2k&e({L1S$O^CxOpU9WNBs00MJ4uf`3IuE@dJO3KK0*G zACKB*Pfanm#qs;+ClAmVvf6&m{&3{*)cHO8M3lGb#{KnBXSWXgeZ^4ZyVnAQl<>@2 zIPU!O)(Kkn|*q#N-xc&T~0B$e^uFcE8-d?SXni>Qs*3sW%VJO${M@JQL zKGr2Ta7Hcx^pW3H1}$@ACcsg`ZHVr&h)ODNFGzeoeC--LvmNce<^{zs!YG48Xe(6F zlNa$0{?b}5IHn$5S{n%ee7Oca2;!a&-C|Tqj;l0a6NH~ueE|>0Q_sYe1BJkS(IX#V zx%Z@+IO{7R{`whB06D(`J1Kc*%HcGCBX|W?mF$?TrNEdYAmvyRdT^mP-j>OjW<#{A7pejvrPJJs(4XVC`mL7(E@toF(r=Z?C$qr*~vozkf6D>kTE+d%#Ra6Pp9 z&&16&snS0Fz8~je=Y_u~wt3l=A+T1ZXk&E<4wQiXBKQv}LHf8S{r5lz+}&Z_Qa zRDKr++o%tF1kn=|+-=INLX=k? zye8hJXVkKzAqYO3`kdT!t8cN@Of@i^wB%*G$B5;g9Miy1`Tk}oYgw5RQO&49B@eOU zPiVs4<>;3(Z@6Bioq93h(R>TOX6;J9%~^0=vfEbgBdDre*S`nAri7#u`PdsDM}4Y$ z!~NBFIvFuf$*9Nc@qTjOFgac_%~>NWP;{Fb%Ti_GaWl*B>F!{5c$#{6yn*ycbhVV3 z;9U&M#q-M%>;jjMn}58Qb9`{}FIzr;CQBeahwr^WHdGhLc>nv!(*Jt2)^@f)2Gr5a z#m2Bo;4>QnY9mOa3NEOriTw?!NM0Bxl1v1Jh-_%FQG0CbPL`Dw zeC0)I9k2*rO7{Bc;T`{e9V8+To|xfao#*g6>yp>h_x0HqW{VjEx*=I-{zUaYYg;p& zSjRwWV*#&4qYSIQ_;~IMQgcC)v=oflXf^w(P@62&H>#wEJ0BfZm)}|yXJO@9R38yP zK{al^VytdNfD2uk*g*OA&7glJ27?}ziljh?BL?V;_tT?zr=6+78GIvwB9gpnZx0qu zrTtLroM3e~C80BAFgVjv*D@=fevV?n7mGTMlqP2vp=fq^LZ|&XeDvm^Q=BCxPxIvkAS^FvO0`Izqo!PrpH(Vv@=^ zV{w%*Y5*nAhw@HRE$~gc8InkzW5H-O8Ta9})9i8k4=S_r)L2X%1`CB#>@@wsi;WdK zMFuc%1rZPaNIQO_m^rTsb(y=IQF1%1Ob(IDnA5M3CTG%NxPZ|^Ctv^U;t+Dq@J{6` zXzxl$$yPfovdZW155FlQotxQZTyupJB%hBT)US6)@NP;Qsz;hK^%Jc$``Rh2RS z;F*>+7sB3>(#_mV$KS+A!uknr280g5+G+#OTEjV{ zVf#VvqjAObV29n9qgT&3dX_St(>^~a^q(DS277fpaGk905f^>8d}@56Wq#22f;0!U zs#N}s!5g`8=0a!FzclYTe>-FE7w#=#h!E z0ivH;OSh8J&<1~x4T&hMR&##Wa!wyc232#lvxDxyHGzC#$}&Hj3-QL`jb>)c!HO5Y z;%i^d21ka^WP!1CM_ATm#Ex`Ku02PYNAEY9%h-xu#e&^v^K+W@q9gYv*ikVQcnx z@C6?Bms|Ua?*pL{nUCxL_Aqu}m6{zmg|yb*boMDXsMHj^bAHlRMG_uQRRmt{Y# zgnWc?&zqr8E6xQ`SyOFtgTDwRsj&2ATy^{GPM(lUFKc%$`k5LXyQ9?c&^%0vbzL-H zYKo}?dJ&=(y>zReLuUYSB#j?W$bHV!=@SyW5G;uTdfSkxYeb z7Ib}4%IRd+ykqww32&`}&ta_*?nhI6fu<3 z6j4g#IIrZ{K8wsqy>>OuOy0VqsN>ptgW5$UK48_+zyzGQat}xFg4`m_DsZTB)}IlX zcXbTJZgt$S+5ZbQ8-j>FwrGX!;yy%zT>~}m z*YqNZWO86Z#U*2VS?}!3W5?GdomC@?+9rGdo(wHOe-t99&JSSfwb$n6p^xaQgODz` zFZALYn!Wy)TR8-6O>AtyBybEA-~8u)%-`E!30qUUe>_kXEj3&ftPRQ*XbAviQU<*Z zwG1d58hxUcg_L03HVKjDi46)wDtDT}B%JcgSx#vT|1u^)xm4Nn4B^(LJ^e>e+hHFV ziuz&->!Ekbn~#^@A(`Ln+l$pFP6Z4sj)^RxK`OtZRZ+o3o52N>D*ct0qWJPlG~*4= z@>Ep=g*vyWDsZ2*SRydZ>=8&u!369&ZO{Bf8)$WWFFhey{Td*AA zE5^67{=`=_6PZkwK9ep4r}$aO95Zyey_}p$@wGcW&ZwZXLb)9o@JyJhXtuZ-%kE-z zaav!0NbYJZ*Vx%*g(J5gUo3sVam*bP6KMNGH6GFaXZMPdIC<72A3q3Z#b~m~joq#x zC?9|f$t>Oq-CTft+2P1U+riX6X}-om5^#V5Fw;1RzF_-ehl5^XiZ5-;8gx2BF%yGV zQmDLAY-Ln(<5ntVg%4IjnqivrRf~`KnN6fbjt(kN*%s%_Xd8^h?1VZNYL)0o8ozu= zT(qrh?7=R|h-xpwzxbQm`E1&9n#W zP1Po$Sdp|##h1?A1|~|6N0RtLWwz@m zA4>{3t*n__t41(OZJ3s@&)VE%(j&^N>CV+8!;iHXG7(7aHsjP;e^1u4)L6o7iiJ*p z-WqiBl>k_6@n2Nu+yYGmk-8_J)Wr88fu6TLjN%{SN>FUE7+b@r$`R-jk%Z-r{G{A zc99eo8xas=b9}Us?sz<$z9LTOw}q_$I}tIlrBYcxzp$Ykxb?3}nkfF{O zd10u`cx^{|n$YacKFm9pAeQ=s0L_x)5ncU5kNI$|^#w$651eFMcyl24)gbD`2qcMl zqTxKD{6XQ?%KDAF>e67`H^L<5p}!iD`i)-~}C!GKuP({-D-nKmv+#xsVgrN%;weFp6ZpHHYiBC-pS<*C?d zd=l@&8~3U#<^?Ro>>fpQODlzb;haV(DZXLe3|zSgcxZQZBkaH@Scb;%}(OEU&T zXg~i?XJhD_n%eiE8ZydV9_FwxT1^ab=N85rf=!WC(AU2DKRHREaW3icWTblXhS4O_ z^5Mfy?b!BD+c)8yLSWT!$#cfz(><4pI$U}?U#{MV<$7=m=v&pc)p6A-bfVi#FAcS( z_hqO%+w2j>#u*rrVfrA}XZmEsgwzVOc!O&_$hG|z(kc5C)@jp%e83Bg8ns|#@~m%E ze$4;cB{p~KjdPJ!imDlTSejcm8G$_DpY+{K+6FaGSgj*mF;ABxjNaNG40u@@Mpk)V zwI%lGbkQZ;sa0gk$YRA&T_{@wnK9K*eKqD18@!g}=AS-Pa(o%)iFDasJ>V*K7Uag# z@bT-wE&n+e%^wGdMpwbS-}?x%8Jauc)+tBRa6n98P=_D~4RwR@v>9JSVcM7ry!z#g#!&sQV=_ zaA|;n%laRSVE(SP`Ukg=q--NMFAv-ZSzA`+_E^z}3Gbj@LxQ0qvCd~A>XjD9W9YTp zFc+<}N~y*@A!MQOo%tq~AEqbssxaiV)@C3T>3h`rkbRhW$bY!r@b>t$kNchcjA;Vb zRHYm{DW%**yxf+$n88Z1-!gf;TsO(M)1f#O{y5E$U8WNm0(gZZbBtbN&bSY83~13d zhQUzp9M5^amnq;)ditm=OhZ#lV|9YtT1l-D3}R=EB^X@SJrgoJ9t((Mh=d9_0-6mY z4{X+cmQ+r#Jeq!J#$HaCY2T54%0=&-Lb4pyR5HN2i7-8yENip0VS+1pwQn0h5-*Y> zfk4JY5)%3*0Fi&x3ne_mt$+)sxZS-vdFiYThp3djo~#f@Pb0K?YK?eT0%kU!5*Fj; z6GB<+aNry&iP5GEckI^{nAdHq2p+xAzvObFN#b&Sk}u+(1WKwhIA-M-fP?fw+UII2 zB5jcFW*yAMr;pWwZJ4O1Y~>=el42DeiberGL2^!n34WI*yZbvM-Be&0wrzt2j~q^- z22fR8j(>|C4@O7Qi{!%7&5zv6a_QSyeKdT>3N-b(T{@Xl0P?kc*q2@`e$!)mtb|t+ z?8vYk6C(1TjXZ?y)az}NGLPX7qKv%6k0l!8rBP*KJVxMMYI9Gd3%rI$$0I?AbB z-ktA0&E{(^nv}hKU>Y#X z{N1^STZq~Zk>v_~nx`_7X~f0)fIS-H`bt_)ir`-XfLP|4>bXk&t%gLz6H3G^f=qcy zHAI!|R6QGJ7R-_p`?{3}>vAN7H7t`79kGL)VI0udEw~AWz89*Um$d7XSsSHgW8Bu5 z|GBkMr(U7nDbk*^3#|u$oLX1Pi zHBV`pLd41Lh881cs*cUMB}zqX*%S9mO><$4ZL+uv0ZoId=y2>RVP^&< zxl604>1)3Cg)<_%j~DF(37Oxa&_AO4i)npfa=W%?)#+(ME5&Cq{Bp6V&3lE?yBx0~ z5iTL~C7t%bTM11uCDQ64^k)>JCnTT7;*ckRlAZ!SqaaCpbW_mf_MP6q3hZIdoWlp& zj60FzSK1ZHD<6#5uQuvGWbvsUsP>g zC*_i(09%(RM@^h12ZVlzn8df{%+sd!gv@R^bDj9%z{v%hl?24}CrlTdUTftK#46|Q zmrLk`#_j=b(`^iIwxHVfEfVS8DJI!P0PepGPq60L>d#gCtTLQ-8V_b?Y4dD0el%rA z1;3ZEm9&WR<&iYWy<^I;n?CX5sOERWC5+x6P3>yidWcYap^-elo`NI23ZVaH!Wg33 zYa4fLiBfzy)@K2c3014EExK&ci1;~1eqkBLNxdxLvpo3>i`UnF4k7UIm(vMyK+?cD z&lVsLWNep!`*nQ(ZAAQ&wiR^#2XCvgW((Z5(-}@l27JWgn#y6y+^cm;LbQGuo zR$&hiKW{3+UfY2_D8rbZUpwKN-p*nTs%(5ZWmveD7TICtQ$M7^UTOv42ob&^4Nlok zL73;e$>`I)WaAsjwBr@@7`R%%6_mW;qeilAgMsU0ha$IF-7pepkd!esusX5@D{&At%rSwb zi5@(#RP(a^;(sf9#{2_cvfXCAP6i6k+9aQ!q1=k4ZDAtaK=Xz|Cdfg7=AO)BESdv! z1z%b#4dpQXexTKTzSwep+CqihzcKMiMB5ZYQj9uHB>35m)A*Md4&5-jb_(^zRxd|B z{2qkCWg{6i)6H*(i&f4W3jR0^6Y#dO3hYHqW=YV`*FR4U%E!^eY4+92sx&4fY&KAq zAN+KQCr}kD_R$j-tdRGNLojPcXugohOSMv3on&_9CbXLc)I|eO!>H>cU2nFJU9vgGWd!eKl>iu<+Z~E!E z`kT(OpnBCwpj!;7M`4I(XhWEzM0MSqq%~}JG>3^UR@`=b;b@%WtTY6Fkc!{6uD{tP z^ojf`wBgf(zzzW+XNpHK?J+9pt&?7!SiYWnw2fn?_bdk40eDyw*zpb&=<{CtL0|Tv zFpMh1F3oK9*ht7Na|^%U(huEbx@xO9*~RM&N*ThqZ?pFgBM8>*qma|-I-2>|1Z42@BEhzS=tZu6!UydB`tR*(K zQwKRF^m}B}V;XS}q^b+qEodDax3K-+G3m~2e#q?Qk62=1(=@aGNut4 zp3FXfuIp)mf}dx>gN?M!C$dY}JaAj>y?xZVdDO9g8XPTzN_r=?UT1j#Ed}s7T9dCD zV}xk%ZxK&p9BGgpu<(uXmM~AzplcHAE>=eow($l36{`OvZ-ts`PE{a#1|D^FwH5;c@QKa{&nq}|N@01v^2o~B*&@Mdqrf1wnyLZAv^Ir-@wCOGq+duD^ zK3;C{bP_?2_GU?6em*j}T-h+o(UI6lz{u?O-rjH znJ|t!haBH11beC&F~}#52f|?q^DeVI0t#vx0FDwAR0XF` zW_Od1=x81xc2yWN;pm%80lDx+$Nl~ZZlQ%xf;^`&Xb?fpoNw?`+s;?N&r05NA6#er zZV&EPayL))5R@{>%2D8skr^mk8oDVt{nmBf-VY~)?m|q4z2@mj-yk$-2n$_}3lC(; zT(f#=tO&p*JRDU3(mz(|iQ5zvcc+BA@@@vGZGE;o7bFf&I}`MU&Gqk-cZ=dz)c9a+ z2~|$&bIT{>&f5y+LdtUGUedxPnloJs_?0ywmgtlBzLK1q*7J}>OtdEfmSP{jJWAaW zzV8^5Q7DkLV68JD8@7YE9qGG~SCO?zTP;;bCxc4ihl`9>QFI+Ms@P#11f$_2;aATm zeE%&kAq`$=(8b6op&NlDgVAE^#?QPducyXJ?Z0uTk%VS*Y_t4o9KTs!NA6enLyCsQ zpo!;-p=DGxaeYm${Zxcm^l@Jw(yEyug?iGA!6dMfBQqd2TTFc( z%)(w(Y~vP>qkK3*KF}1pWX8^Ub3sUi-~=auF;}M(k&y??}h{<0Ud4%DI)=2g{ z8V9-Y3-$N_I2-f4b0RrnB5V-DKDM4g`;0<64Ufu)i*T+720mjA_j=S`FLT58h^N++ zp7L!P!BooOYzBx4+aXuEuf-tUBh&FT%M`J%9OBiIEl=VOEWHwAt= zH#I(anU}&g?HO32pDzCMG9HrJc^YFq;evj~;h8f4^Y3pL?%14#s+f{3u&`y{MUd}< zNZQzKn)N<$`-H3zQAxE{yJjg^Ri4(tKER}Ru1*mcbzrpcqD3;i`UTP2zx9_+an4+SIhIHN`ViW1nk6fng@Ab0B+HwddL^aM{H8z~Z#i^~*MNdduyqT%`C z5BBvWte|%6{gVDOW;{POII&hlf5=32lhxZ_{N4Y|qip)~id%urx(~3t{I5$(5o?pb z2?FFy|0xNukwX%YJohd zxu(?5j}^}+{L{9t=u#)C8ok=LG&D?4@!n1t`@O#2p!e{O!6EW>n_hVQtfuFicP+Zo zxk&v1SD~_2m9`F#5J;F>6A0(SsqQ+EZEsThOaU@ftGu%PvhK`9tX9F(7hfdl)uEbN z62-JH`)C+u@YuomgRB2h50rdnIQDpptpt>rOk`d-mCA_9X1H?sqI$V}`A1>qU^S#4 z(Xv{zjur!p@vY5LGVd^P;CX9NAA~TS-ttVIk-RWtFqY}sQ$$O0DXqD_st3`;VVvL7 zLRJqr#4m-|y8W;odp-+$DPnj|XS@K&V3D{&Le05b_=_c>pqzPKZhwDV7XmN{$_Z+L zehM}>`nUn8e)X=ZG4|tx%A(Nc)L=FixPpyFiLLlPIP;O6`e?L9G|yP0&~clLLfz8W zL$bJ@mFoKB2+3Dzx6v|Mg>S)>PfleId=a#z{fI0H?XcAL2+vMt{Fov?U%kYeVGW!Uh{2_uJ0buzbl>@eQ~vF8bjy*Z zp96}+P3(+!^w$%vVAXSUcm6-J!PALx5Hv4mapwbkpHp%0G%phkAl4k|Y8z&DWsd=vkdoMo;XW}2w6>16w?8E5&pBKqQ7_ttG2B!C<9SJLsw!%_%}@B8 z-eEm0+BDhJfs%}~{(8jjjku5$H39?|*;~3W3kcXE5@O_-R=Px3TD39>z+RmHPcNQi zqKFx3)gpXaygTbo##vPN-UH$XP1nh`S{JFbhjDB3;PqUcvYDWGOu5O%;znpSRz^R{t1%Y{aZS*Iiv}S3^T2?&qg%Q&qgOsATQ;YV@0~Nt z&t_Q53~02PyGiv>HDrkO(J^aI^!!% z8&cu)m@4fhcS8NDF-ouYBa`z3Rb;n%{-(L;I(2yI=MCmC0JiNREuLeE4*m+WA<=yi zFn?WI$wDq7e9T59ufY?SuA0hcI$gL0`W{%0BAyN>bb;(B5d|l_;x#UNU~xIS#~UQz zyl^(Yl@h2u!;mJtzGTA>sYC6ekCd#Z(GWm1d+j|iOFdj92)XLMMWVh){G(3YmYa!RgFO+PamJnrK{svP+lwwr=( zOriBzt_SbVE_R5)dx9vgSPYKM{mVV3Ls~*Nv#kG6$|&)+sp|7{EvS!oog5N+*tK0w zJX`p~QAgKbhRuIaUbsV-?vLy%`M;8VDVsamxjBir8=2Vuv7-4q##jAA_GPOlJWTx6 zV!R!cWGZnuG`tiXB>;t41cP42e!nqtzmLhtv{--rk>?e*k_}m$EG`MxFY$UEn+goa zWjp@?Xi)9eZ8t^w_H?@D_K8(pKhxd9{##~=gKpy%caf&$w9UZlrTFxC zpMGiOA-lUK?b7>V83n6f)M0Iz)p?v~UDIW)@+oM?q?uxL{=4xzw|5=V5TGDMIt3Tw zLtmM`p=ZVeotAir=?c;l8amjSmK)k8u~o6R@oRiE<|kTZQt&0UZ06dO>*xT^&yWKA zns5?&yr^_=X;R>c)BSfKMEM~)I;@sH4cAqh`x z?hy2ApDKPdbLQ7G4c6xBZZA7o27fxHm2sQYEpirY@8X8rpnoRW#^^U6m$Q0Yp95dx z{(@pVj)f^BWiJP2(RSj3eBK0#p8oy7Ld|^YXSmNSV=#e=)fWQrgw%NEV2jy7pmJ6R z;wfJg;ykCKB^W;&Knzi6fdy)J-wsn0}>ByOZ-MfU?Z)k4-5O6re;~Y|d*TMnC*c=oq zAr8q_+rs0_f;H|9Qe)O9qq{x1nHGo0cVV~#N`$x<6nWl!R$PC3)c&tq(2BvsAP$jJ zY*|7y!n(;Uq*z6qLWVKciItwf`_SD9AK^f?7k{3Nd&#zn9yt$}M_}6MeDR6>V|7{i z4#5Sg8v+YKtS{NjwBmJcuZzO52Ara6=x?GBO0+0s&q&{fRBl>z%JGq*po_!eL==eW zLNFVW&`=T>5Ss9(p0Vz~yo~fJQ9;q3`jBNH+3NIP$-e&eW&A;UA4Q;unF+2Fa>Q?I zmH~oY0(nCCCx~zh2#Dt0jI*1D0bX;xvAAPB;$62~z2Wfa`VomF8R4ea-2I|En3{b_ z#b$7LRlv7GrVMHRz5tAxJvOMS%)AcQ)#YN>CUV%M*`RIm$J#wBu&!M)4+dn*CehEf z5nD5f7)9 zlvXx6^us?&>F-Ex^1k@ToRrNijN*BXeK7OZ zTK8w~bm1NFB}utB*IrlKga;e3XpcN;-<+{9%|ah;nKgr~aR{&F(n50XAU zO}#Gvsh5Gnt*`$v75gvoB5ZBo^p8nbm9iGFWX9r~$DomFZ7R}+fuUN>sB}-kKous7 zMe{HZ*mlqwVyT^o-=Ht;mPAD^2zx$@VexIyf@!AR?hU!{cKUtx#Nbri?d$i3ppQI_ zolMuBN2q@9v#r?{%g|C}a1y;%xfp1D6zm+`dVaL1v&QYJ+f{WdtfuZb$c9G=GgPbd zi!~Z0<0FZzy5=iV5=8e_~ zH%in>Rn067)>M~!1Q$^4SyDa*Dt#l56P*Gh_JnTj5yir#iYO+6VO+gD^HW!hFgZp$3Vx>AJ|jJz}x0M>u< zF^V@>8jOa*3};x1NE|sl6O$TFflYEzo$Hb0zt$0-q-^!>6}&GUG83o5iKe7y7n0!^ zpo`hCVQVN3h9{233O6tLlO%mF+P(v^!#pY@qbdTp|$q8X!m$MokS@C2T zurVR0b@pyp4ugvux1Cil(Bu=tw^$@-8V|1Kk?R&G9wZC4M0Hg^rz!dcTp~>C!X*Xm z)ucnR+qT3CEoFXqR3(l!HM^CLc)P`=tV>iGvfE5AW>OI5OQ8s%jSUlS@cABUzea& zEQ&!;d5SvVA$w9BW0xdShYx9*&>`<~+cw5u&fpZguslE?GXic=8*qcBN4ksOz`$XH z2!E-S`(x*GK$QotVqeF)wIVJldUezXPm1LE-i|xP9 z$nJ8^&r24NdGQ%nFMbX4^+g-1Z?XLAuE-yhy#=>rYz3mM9uQ>({{Ow2zZKPrm@ za2+qS?u`*b^uOyNAAX3;7=E^%6~6sk-^XQbG8(&A*e>$XnTS8^x&=`YVQ$HV7wzE^ z*8@&x{kEjg3Ljez=c}#v5lC6_i%MPoCzzNBYUM3*+iHBs>dM?G4AG?!TFcz-_Sh{J9{E<{$mYAkm4ih1hl4aKQR&*Y|R%rD~U5jP%fSt=|Tq5I6<9J8SsuL^rL zs(WBY5o&BlqY;Pv&rxmBr3AmnilOUw!0{zyKJtBDH93PQz$K+FSFFt*-t!3UW+_^A zje;oLkGMAn2x!)I`ch%}-@LEEbS0U6%=ny)d}PU-hXh+pj*s<13`pyvtqaZ8 zeZ_(G!pmLi)Rr+Um{t>8M}???CyN??`pFg1vSBA%K;ALb;tFG%6%o%q_VPg_myuVP z0lPw~=&6@&NS?z1ZiPU?Uyk?x>9edQc&;LW(NF^X{_{cS|88gBiQvzKCi=iXcvvi) z1OOnR>>88cGS1|{vL)*}YO&Grw+EhQ?(Ho=R-s?@2OO&OF=60sKrfZI<(WJn1Z{Jn zL%UMbdDyix8&C8Fq(bA$4xvsA2bx=x(TyhLMg|J8nAmqqy_{XaL@O5GHqW*xlsBI( ziEb#p#~a_#jhNIW^Ja!IS3K8a{^h>hpFFYSb2o4Z9N^vpRfPXuPHt>sYT#n+{7(^& z;NP#%{BvGs<+Q4b#Fx@yat0U}tlMR~#1J<+Sq;nhu7lcBhf2TzsyT-k`Q0jCS)71) zZdC86MnW9dZLBe2`b{D00{tdnz-9PK(Cc!g(`>q0HKqIGX_xWSxcgA8W$L;6u=#tT zrl|HJz3oXj#-(PbsPN+2HO8irXL`}mMo#NWR7vnp#G%?Oue=WBopd1sjm{;BgP}Z0 zYci~2v9#AKCa|pU zCtDuDsfi}yL*vj8fsC6yB~WStm8x4Z#?%|DF}oNSUS;Ndzf9bb!lETm z1}LFqdV=KMpqSk=(({~xSH$m(Rs^;CIs(7Y#d`C&IK*sA?0qY=PD`Xi#&5~@q8yz| zpF5|JH6q04MQIM5CUbX4>Mfwfry;t#WWSr3LnX8l6`pNWvk=}? zTH{M-3EuPdCP!nCaCY*hS8X9v1mJx8ger9U_K7Sw%4wg*p~CD$r?nteHLt|NxrsOS zO8!bp_^0uw1h$mj+5_rrsP3d%YADK(z!*>{mdY66)NOCQVkDAD$z_znUgBfdPfE_$ znKGUu$;B70QrfdO>z=laq330Rnfe(x_2^g>#!XeUiAka}2^^Zn413C1n4Vb>oa2(h z4QBJ^G@2^RDs^r>S5%LdA2W40Umng$f?f8{;$C93B;up8SN62ZN9gc3m*H-UvTe)o zbyeDFjwO%Vm^%pCGsczMQ{K~FGj0t_Kh?(@QR3q|pC#6!$q~X}xt`xoO!xzW%+JX$ zMJD18c~&=wXnhq4x7`4*1Wq*;!}9qh)4wMbUrDODt}6z}<*E0=-=eK9w>@oc$M4_} z_yDq%SO)fCa{k%=+t}+@p-0PEgP*;T+h1_=?aVKmzx1Jzry9D#8HxMEH1hyFk8`7#C0SgDQE%Z#A%>l@`9^gu`0+GNPYlVK^_y{OufEtl zDzJkapXrtmY8}6O+0~gEZMs9ai>vny{j{;}=jov^pvIM2Qy=2&!7zxiu^t}EeuNxB zPHw3)+>!&`@TnYSmm@rNoLm#rtbTf4j zK#Ea{!rff^8A5o*Z7JL7yQTL(OSyl8MmIbyLSUI02uzq?{%ykiKfuS|Qe}dk9q>}+ zU=C*3rTq(pIsBq7MHO6<;7^s$n&g6B-((%338L{=WRc4sFWR3Ptf`$f3#pgp|1(Sj+EjcHTf%1RM<9T!Hvnk6}5;%Aki+FTwoYrjmZ z;a)!?&pMt&$C+-`L7}acje&zoMf(+1b#(Zt(DN6$_*|+6ijFWtEHlg$jh~ z{y7qkX3o~WtbOYx+j6RGR;UBp6Z5?qV#UifRr<^fT9Tb7NZD7aw7JaGYJb$w=*84# zHf3I_&hEB0{}O?yH#_U^Rm~P}U|L1c;NT7t~j&25y#!mlZuJDf* zr$|}jZ;OJm)RBq3BvLEj>*la5wxxyQ-x9%;_CT!J_&1tU91XaQOfSA)&zgM%etbnu zISLTy(c7tE%1$$Yr4JsEzGyX@y2)aHSjr(309hZv+s->(tZdU-QCMwCEGRmJTDx(P zXP_-HRoO3wvZlxLlk@CqI`j1Et9YiJs@6i*Y>l@24#gO;W~ip#te?_!(_DEZbj@`| z{L2uGZPUC1R<%VAZeidV1Kv>V#&9_`q$y9$a(MJB|QW`)H<_!tk`2bfc#@ zhcGLXmwsA^ZTSYopKWQFO^>^DjD|D7w4VG)|PM9 zI{`_gfupQ_H~?|;8i`Jt`(!QhNaGmDo4w-6xJq>`Cg$icgvf1_UgHvx8jOXag16ed zR<$VXbbxk@k+@O{|N=G6-dswqpg$`j_AaDSx#j$U0;c-N}5%y@p)fH6_j@uTUD3%u zGPr35?&9?k^z#iLEg88&n3t{``ULSK6xIN$VZx1c)cLzburR_7FXTRleyWeq6{h)i z40CbUE{lN+_Xqadgd9rO&hv0T)^6RRK_r~1K689;o$b|Ha%g^0zO<+YcX0az`HEqp z$pc9y#(K=f!oNUj0ei^Q5U>aF0aj%q|2KmB54_p{I}sqg&nu-@CpId6tfm`$k}ntm z3Tn7F!{#QbIT}f=NJNcm1LXE4(F|4C8TaCO8XEeuriD^_IX7N8@>h96Z?IG&2Jz3F zeUW5^tCLtstg<+orF?$D!bZ&|ZL`nR9e{%hI1+nMAZx1Rg0zU)n_I%RodxJT!^Mz@ znZzNF^IE(6ZlU{gpjY@%Q=l23rA)MOj0cvh{~)(3+8xWDStf%M*)ZRwC@q+3Mb)gk z+kGtLej6=%MZ5{gzL$QM)M3h7kz@0hx-L1Td^%Kc^v9+nKZrh`Id>7fda8V2!e0nb zgWc09n+(eUokAH!0>^_>%$85)9`_RF_ODTu2a{?x;QUpTyMACon351e!WYznm^yM!hSIf2@C)mz6O0 z;*H+cg;W8Rv(0f^j^$UHg(j%DHXzkY_X2o2lJ8;a_4N&?YgVa5!Wp_;6&vy?6EdP@ zOzfg;#1D+yrK+)V+v^H-rs~-G_WYx>D2lYvSBdji*NJG?nKcMXhaf4bsFZCwgP(2DK5b5mXAsga-R4rVmb9 z#9b6$gIMLpl_r*75$7_Xe3MnaegbaKr^7r#zA_#(+LUlA<>w?r@-##t4niEf@*oBk zPkIpJKX0i+t^kg*x61&My^FK+cZXrGp{1si!4;ITfc1+XcCvFC>qNY5jVdimlF#9d zz0WI|K^fo^1KCnK*tW&N9G;U5%H?XnL&F1j2fH^~BHF_XP;_)CFrSqIPXyM;BOT2^ z1ntd8G;MHqq)0`ggQ$C!ctd?BQRD zjDPE*&7q>N3xu=d>W@MQ09+%ZVPD?FB=%AXp!tE}T{;Yzk`1ljP*d$?GY^Uzu zvN=^q>?0+k(*5f?pw4t%Nf8j8q=D!p`F}0w{!W(YS^c>m$+^d~ZiEuNQweJ!p~j(z z^&^?Tajl(BFVo6+RNPTW?e~UTvf?zYM=4S=-SNf4p)JRxK8)2`2Uoc($dDyy&aF4} zgX%f;-^mi(%G-_k5_}Ky%&N@FA1zIE$a{kE$w8v#GGPdP2*kM+e9Jbkt(&~P_|$9! z;AUwiQOaH##Oi8c+=9?7c)(3T{zehOVia;)lZpVg_t2>t(G{wKwmOC$R$-X>9b_Qi z(am$U{l>&7wXC?vjXi=>_vQa#?H!{u?UpUkspH z<3R7I(7fyw2e#92>Ec)5&0!tzla!FBr3pz5T=+cp0>$bE7_BZ-I(HWGH)&K_OhZX^ z6S?gA`%X}`Cl+v!R}IlRD%`=te4)CAoyAE(!Mbl^8LA@m`+z&8 z*>`KMJO)s$%g<@9`5Kj+L>aI19I+tkmg(BPP}=fx_R^u*o4C&lv%4M^8vYa247*-A zxCt@ZK(zS|Q;?8VCKaeyp1e;%W@B-go4O_wPj6isVc)8EmispJ5olH`&A#O|O6a?S zh$DMWAfoHKBFRo@kCjS1IeM$;!Y67PUY=jefPJ^)OQ*o6@lBq(J9zv?LIX0b_jvP$ zl8ynYq`>d`I4(i8hCuv{yiL0{%hq8!yCdh`4g=kA(+0DWRphJ<<^Yn6P#QOjVYiP3 zXJyfa_P-pY9nsEP^WPNjT+u?|Fd421(J1=uSnGcJFkA$DLeje3sT3X~)@sc;r#m#Z zy9OoPhS8TNbnRXqfvNm5MU3uM8RDFkK9Lm6w2Xba@sZKTK!GP2)2@CrO>Jj$l8TLZ z0E+@=%Uc~V}A8I^#^Ir_KNox1LNiqdcJFAwwM2mk+R z6#93^`K%Kflo|>6giyAV{@_anz&i%YJNM(@3P}PLGpPADaX<6pB`uXDmU9U6WyfubaFV6VFv>I2UQOs(c@g&05615^jpS^icA% zb{Qg|TVzY{q83Hee4jh6xtJuwWXq!h*pRa_vC{7G(&Tfz8XwSYaC&yokuqj655OGt zmh2kRqB2*j2f`ORVg9$u?`m6JFn6M|?wPmIzDXEh$NNR63Fx?i>hYXq+n=_rk7-?A zEx$iMA9;NfesfktnMYDpH>ic8xeV3HlUC=B(LfieccYr2!{`7ql@<%`ae_GO*^Ra^ zl^4{p=~~Ib3+Vqio34gnT&CD|CWcBYeY+&Lojv1-C_q!oKC4Zb$0DXfAh(!GwvElB zJOGDN(dNKRA68MmO}0i|t`lg0NCj4kIFr(FCN7WfPMr4ONB5+V6p!Ix#OS6vuk4dL zhc{6R7v~M@HY*(m<#MqMU9O^*T}xZENLy8#DZ~$V@)a3~H^L^sj<+UrS-!{zL>Lq*Ee zh>X&_j9r1Mng(aeXnbuvuIMt(MFWGI2u`gu-fs>d;yyn)OKZ%5p)Vc>8;nw~%f^u` zWG05I|Lhv*wM2Jiw`SzG(T%7RuN%>oHlH-|ic1>iA;KAP=Txl!lD##pUD6K{DH4*xJMnl8ecgyW>wPh0e zz=HEO;HJp>$p&-Ujermo#MZMPzr5O#rujBNt^w%C3U$Q$+TWnjIZX}a>@8JMYJBSM zz1rW!5(`vHB0z1>l?|R+#OlultC3jVxlvHd0Gv`W^o?`q6HrRkgY2R8M<#S*hFIF~ zFMEYaR4t%_FKJUeln)^X@5=m`U4w}=d7=`yK@^LkL$BAn*T^<|*#Z0^&-7cYy#o`^ zBPp*+z_vY&1jP&7+IMu^i%ZLn3igAaMYIOe%8$hEddv>T3YjC>=Vd;8Xsyid|G0Zs zCCnCJ$*18gvJBk3V2yX>n7=0PeV!ZeO}UUn6j*rJa{9ULn#pC|rk1ej7}AS=JL2IeuE(+*<(yq7$1HMM^AaBV-O8~N4bG7F9C+`W3u zfCDy#&q5a=$*ni`MD=v^4!eJ{917av)sxjOla0+S9pG{ILg~1%eY&?g%jO@=1LM9| zw=5ipZOMw&?EiWVyUe$mgRu_XB$anZmEu_$W9iB}6|yckBX~fzfZHQW_Bm@$a`HnIlDs)`GB=nCI}ev6KdQ!M4QdkXJ*e*E zf)#3F8{JpRdzu>%=C%nwwkVg;}wwns7->r<_ATqshnN?HL`a99#p z2h6^STy?|2BnnIv9`(3~EtHmz6O^>{Rz?fS#y1Z(V=f)O}_u@RPYxNtx&Z5i^%+QUF{f(8bWEYr@&pNuIdQ;C(WI=(6aZ>M6aqTpgTQGJ0Sqv*zN){_6k~l^kY}vX}Ph_x4LT)Qc9$<4m#RO{$PVg*|YRc~;M@o8FSf zjF#`%m4Y^;mF4Go=;nD>vmg~~@syi{?-oEM@6d7KF``AuM&t^#qi{7sLXA-zjRS?D zMoB}XRyHCA!Z=L;!J;$nHguD#S%gtGD}=U%P!{7&XAq1r`!9V?$t?9QZus^RfG3hfdWZ(ct3KE#`x#!q!bM zoxm6kUXk4@aVJQCg5u@Pny#VwiM5pu6WnDr7*}S!M^~t(uavrpu(e@Ie4=pu1E8mV zvTU|UA=a{*N_;ljkgYv=Q%@&yO(p^4Q-;Z{c1qxeNKq(PhUn)w3nN?rVMTqP1|nYR zwV4Bi@U^aWb=#9|6Zi4M6KLCqR~7Sd7WRCBItfoJWcu1w)UUxezgHTualjNZ!Hbtl zeJVjE1CYS;Q`a=&l8`HT`uO%G2J~a?2EMm+l?oVc+&Ggc2e$!ddxj$u6uNtlwn-LA z9E5V48d%3QcVpEhEnon9OIfESoXZ*BPVEAntaaHyn2h#vF=SAp?GiVS$a;&D0E~XJ z)@d%~N}l&5hlo_uhSNiQ_o*~hjeChfvGyjsMxs5`a!hrj)U>C|h*@`azjr^s33bG} znI5aA=IjM__Be>d{TuYDPSU-L$Rxg&=5Yx znzMm`o$q^sU0{NUj-I#UhDZ*sTq1|6N=f1zjCy;5wJs~vwKv{2+{;dEy zGwITQ1n@}j$8+Te@39%zKV{P8T6r1}TY*%H?l2gnF)zBa%|SS$HI@ub)VW!&7o)0h ztTFj;_=bXZgI3FAGoWhxcmX(A;Vn-Z)EJd*+z6kqkJY4P2k!3#Mvh~dxqjki1PBE0 z!>-nw%#6=KC=T1tr#eWzsV}OSJA^XO^-p2g5b}M=DZTuan61(W5Dzy04x9c1XF(K8rRTF+C1?Lg5W}>^bOp5~>Pemst;6={; z^BfVf1_iWt;svpY6EF6Pc?OrQ{xTkK_ONJOU(&nrUZwi9WX7Q&K1Lfx} zh_G=2v}%hVAH#RS#wa%{?qIsx_=-HhDe&WG62pWmTjzFyP+q!xl76M@+h{8l?7N&Trc1cJR#-`Emgd8)w z)Jy0FT8z+z{c`EK52hjd6OnMJTj>88;Q!!~lJ#o^a2 zwJ)Kjb2S`_R_?~ri4Et(FGjj`GY}{X5@5;xb>4cT`CC%cAu9(xYP}Gf45!IeX?81z zbdnRa17!rqu0xo~X??HB$R(t#wm-e1;WWofq#Zf=knx-O4m~6t75QQDn*|OtB$`UI zhGJK;uie3{yKzDZ3}Pn)Vp*go5Cv1Dnm3}#2@VmnsPUCA`DbFSQYVAW$%ifDVKjXw zo*sh4fU@X6^rm6DixsL}=($$k5 z7>y7;ycdT;ypXr*t|n(NX8g`0H698(%9rN(@5y1dR9oOcB>54#?6q(rFpEi-(ZSz* zDI}!4Q*aEU628gH!D(gi8h2>+fp|Fr9a=rR?o5Jkb{IxdO2hVgqpBEWnvp{sSwY}Z zDk)}(WuWn=`Ad7Mc=-s9HrWOmEau+8U$}x{Yn9!N~4et8V3y4Y$ zSzMwCW%$^WS4 zpyrz?jw=lv+HM$u;RLihHyZGn;!o1W6hV?A6I&8?kjiipaPcCGYpJ+}rv8Z&T-;4u zHR6JP)w-OcVKse)E~sut#V1c@puDiOu(l=ig9kIqul4ii!IS$^BGY`D!d435K2OK>|q926>rizi)e8{-sYs2gF=FHCe z$SY4tn^#CJB@F^E!Vgf0#u>Hq$a$3FYHw=|phv^P#f6Rpee1%)h5>oIg4x8z(#ldv zZXm15HM^SnH5BZank^k@)SQP67GCs~50e%2F- z@HkN9T6xU0P5;4cAy+uKEMD@1Td#kU5M%^dYN11K{AI_Yn9sCm? zN2%r5%+#Zr7DKr}5EvrTugeT1+Jxj-4NOKb3DkX@7hVR3loJ$_LK! z)JN8V=Fw0E3-Mj0JmY&yEYdI5>8hfMjKCPvDj+Ug7{>Icw}9tum-%u#{3d{{G2DT=i_n*{FXtHRZ)R;PAfAKb(>q(4TB#c?UsK`snGY4E&0EKJa}aN9mh zJy2Q;*AY^<>KaFxa_>Ugsy(T^x$j@+?8?sFSv!wjrH;jMFR6!bjtCpnD8qx2`XB~8 zYc*z)>jCe8)Y7_lraDm87*BEIGxlms?=2|Am}d)4di7?_+DcE(6Kd=4mGdf}p1J>X z#}Set#H#=Mt?l_eEcpLE9{X?8KL0AaN?Pli|4(M-e{m0j#==POwWQASK`NN@^9+_Y z=p6&gPtOC@i{{O*Vf31!VHv5=$1UE@Z|&s4cDA6jTC~=iza0B}cYE*IWu=tch>Fbw zr@Y)|cs@F_zOlcYWo>=^umRoz8*kH^SavGgQu8%ek^03sR1eKvTveqmHL)BGJKl<& z9Qh^U)@iE@;y85^*8heP(5zeaGTHHN`O}uP$%a3hol{d( z52)%mgn)?VrFNYm{FEh30pSDfSP*p($nNXvowKFB1CgUL*-29l{K!#5rrjS+u00N* zMrZC8xHbdR3Bj{Oj-adi;T}FS*lGdFMMtR9u#(M8-Kn+19H8&5^S1DaE0plY4WVjB z4gg~oAW0gHhhHeWiP%3EifIGd_vXGQI@3dkz7W2`C@y&b6MS4pO6OjX6xtf%K8B90 z>)j=I7M)8Vtxj@_WKG>g{b;+Bz-AS)X9t|3?R=)d0ke~zI@Ses$su#b9pKd~1z?Wk zk|tqj8Gt{7&9h<8Rhbh##|h{aJ+`}Hvep$Hx~wg5 zKx@4p)Iw&#K`o4noozOU_bIM9f+&MM5%@3?wltJ_yd0Qs+J$MCi}w(s_5g|5B{y=&H(h~qQU!}xOSG)=n2tK( zVxm2E79d7|Sl+$3(gf{q&efXqHoOElQn)s~Tl@o!gaz^JE*)08g3b=AjzVGW*Ge*H z1#(x~e3+}8{j_2S^%knDI4NDEaRojopt%}xpp4=-QR^?FwB)V8R6N@A<8cu zQ%4L<{=RxpGtzcBR;ani4Fgqb8N=_PB`I4p8-cs$Ss_!GhRdIDO9Np+hN-8og_H=lm%5`ef~QO(Qx zbbItuF~+vebkOAtHp+(6*hb$~*a|3O*bNNe1>@81Dg++SVJ# z=Y@Y~m5}Pi+y3?45Pbb^2y*>5@!3BE#6LR13O!c4G;kdRH?VW+#cEBbD5SX;rFv}$ za;61=7aO$vG>+%PPCV7STT79qG?bbZus4L6Pez;jM5sm3EP=jci>b!;kl^M$3kQa% zLZKbDWj?=68KuR`>TgQoSea!^5=>M5A??`&v&Bb&C4u>V7ZvwR!c&~C`=lx|=j{Mx zvhbTmvm}NI@vdM_z{O9B;E2IfVGGIehEvYPkA+Lv3W@8MFp$p|Zdov3a!|)NR@)GP zD;tET%J(pLx_EfSI~SQ|*H3*Y6VHiID%bjj&!{a$pdSW4Yp?g>#`tCr_Ql&CdHBDQ zKg-qlU@q>2-8V!5p8n)ih${&|H6&vJJQVMxt}jR&q(`#>0uhlV$K2&U=O-tlXW;fB5OT%pf7FbC?BcK&iN=ueJO@j!cxAY9Ndpgh=}9`S%Np z`EplqqJ4!D`QG_uqYInYg$aY&QlC4!!4O8w{SzFQfB#WdbD=n%8f}JltK3c#SUumAA)# zYeus?&hn>xC#UpprF7B%w(r>){{4NR|JMRkg@UI2ng9|fCc7*dxn*j;l&G1>>j{hL zf((~f1~Jf(sipAcLQf$>=}shp4+b3j)&IraO`%sF(C-{aTAfL%UWKe~L;g9t|A zsMDl$U8XlT+Ki_*-7hsiUYDY{0h9ZR0Dz~gQ_{5V?A2WhFUU^X67@k!H%ykT#x# zuY9q3=Hq%?$yAN&v}AouQtFFw_1)Q1ffn^0Nt!lCgF`zLEYgh@b|bh%IYAdX{N$nsf|Y(Zl@3y;(DrLghNYi(p0AeBdncs1SCLP zn2DnG9r%(fBXATuLmNu=l}F?9<)TT-U#$l8)qC+i_NRG7!?PiA55Fl{sz*9t5PzFf zZ0fyucW8nF$OG+cfZke*6n_fxh0>Dd?ThbTP;Tex6ZA!-EFqJ#bU6b!stvBXKhO_$ zPQ9_(>^9U8-9e~?NdF*-4>I+|`^JXl7Zx?BLQ&HwSma>CO#Z6atQv?cC&JqzWynz& znv+gD?k2k3{m>Z;sfg3Cvq;HahJh<$?dm%DNwclqq`@_N@DoS9i5wfq$1%dH@?2>G zeU?9=^t86;X`4YB>x@9fJFPDSB0f@lpK9{;;c=rw#ZcNOD5nxCApmKsu|^w1a=Tre z;qft`oq^>l*Qr{5V%CiuS2;kcotBt@KRK@V1yhLC*;gsl0Ei-|Z|L2R}{E#!|%ZR~dWO|+oEjJI2~)vj(@h;;3V;s(Za)a9UdnT%FcOL+LKR8I3B zxN|{w95#FuYSdu=`TZ!!%?-Wdp2-6N0;KffeANfX&E-(Z9lBT)vz^|B7>PSq2Up>{ zvu>Y0@)2+&JZ1anF2NBt4as}3@#?H-}1~8%#ps)uTCh57twSB15QHg<9vg2W1gX- zH$~~zt1~Nsy)M1Ogg8Op1B{Py6TL||b7cDB1QVE?Jux2sU0?1V&e%xdMC$AjO-&fJ z*aeMu9^iF3GM&0^g`ftrpF9UmJxLqkh}=JhE>kMhzaG*iqWK|j8Twf^|pm~!dAbQ$QCF7*^DfFyBEVDQ6K~O zsAT*-1^zLceu7K9$GUz8RL~P5)0!bQ8H+3qA1{?x9*%4)Di!-@co{#kMIsNFN)?YH z&d7fiiVZvSKurCa7oMOp7u{?U=<7re7KRH#=n^9d01#<@g3BYNJqf7s7(Px_+Nj=wJg}~SsUF-}`w=d8qd6~Z1#|2Vx zWt18NGOcC0K?SsQR*(=2} zOVX<7?n)cy^2)ePpCUVZkVxpFjK8hAP$H62(+;UrC@Yt;o*}Dl-KvXLHhbl#%QBzK zdd~KzmO8+gC_gLX6n@Dc*b2<$X}u*L6~QAPpnwI zJwoy_2*&uywD*kNq!B(0&PZVEkbLK?LMa+9R6~T5NDp^|R9;tD<#Ib?qPck?a>!Ci zk-ACxcP<+AK$r!}hLkCEiQ#qQjLk^mkRw+13{?ntt;-mhH(S?MlY=oi2#IILag zZ9H)%nQLMiQVKZZr3h4D+Q0;VO0$X+o;u`JC+pRJ7X9Jg)d04asdsUJ2KD95_cVkE z2s``4HHihD$n$@k6GjwY$f0pLUZ5PEi6_dGlHNrCjAb)79zm z_2l?`khDYOgWzDmDn1T+|%Nr;01O+hk+EuTCN(TNRuD6r7_Yg?rqIP+? zo#5Uuc#)Wr)SrmXA9z0xjL{t3Sf+%@@BO>A;n_hskk73k^lUc|qCSvz+5MUbX!3m` zLRnxLz+Sn;!`WQJDdXd2azyu8S7Bwsl;gKe*(1_Le;7U3hHEP`q#7#&@A2W=ZPY9; zplZrxsuZJRBj@8vGviEUKeDN(74w3Ku-0%_$>V;$BE@sbGQYt3Gq)uim*b|eGhiv9 zSUocCW>jfc8P{?VP`#e}bx1#3A_F2_&oOC=DK5o2x zgVB`l6=?PUW2;KrEd#`Z-1d`` z2Wi%avw?{l}AuJ6|ad0Fc#+!N7=b97eHw6G(m@)`dibK{yK}Z?i_o9GDFjv8P(~=#3FD# zj6so*qC!M)efM3m5!spD)JJ2}r)xhErl{85qz11ghKxdrCJ#9pj**KP-2=x(gWSrn z7QGc!N*(Z?&f*F!-R7XkYf|Ihk(oM2WKhGbOHKH~{AhB?FmjlF1u!8q+sJRSq4jQ7 zp3t?6eEg1Ei{v(ws$dHX7||T|1{Hc@#d4OJ{YiU2SP2u_ zrA!-=Oo(E9T>gygZ|pfYI+}ncM?+B}ow!#1XB*E&N!)vOU)=0qXTk1gb0Y2VL=7W< z+<+A616o2Be|$g@qxr})pUqmC*41@- z+yRsU@@RmA8)9=*UTF+*H>P8H>AWnSHH+wjHyY4}ydKH=kc43^2*`B0;EK2*4M zLM%ut1e$=B9~=^NqIL+-$@m`(FY7|gD~7340SLMFpFp1KL(@T>dq4Sq{-HkR?4cPd+tSYtGfOXl%o zv!y4BHD(MFQ`PH3y|xeTz2+>5>gAY`%v&^)%0J;;+u513mGuNn)yG=U0XF`Op>}m*Xh+r6Vk_!~rtX0EZu7?0 z${>EJ+V#eWnu=P7PG@5MHf8z4g>0LSZ}1g`0=x!a_W*q*Izof_EeaPN>Xklg1HhSK z(x=Kdt{z9Vqx9KV|5y?%)jP4zRV~@3=Tcsn>CUcE4RJmh&QQj4ywU(%goHBc3VlQq z@8hT2Tfk2&V-qv2im1iwV(ye+!_>lDK%gW!SrWV%9z-aF&>VoYbN`l$6pj!{XHeWT z8wX7lnCYxjSGdy}?u6bNN*j*Y`pAl`fk&9%c0AmAzh4Lj^PUq_)?BzN?;$kpvFM~& zDTcyfbHv~gN$v3j&F2m2C0p+&>W9Cb>|P z(yQUwr$AGIe}<~Fb6xb>+3oE^uWLG0I!!aQdjU-y(BW5=(qc_0L6TO_d41SGN(SwG z9TAFk>)}5U0-}4Yoq{m0Nw2#<}~$? z)IgbJorl`vgkm^B#{wIruiA!TpvPx4vb_|3H5I#MgMC;)bcp#-YlAPo)ut;!Xjfdv zt=u2fMNrArV8WapnjF_DJf@mx13=b00M|ue`-${SEyf+00~zr4&TP)l%+2sVfBnu& zb9E5)E*!Cj+$fQkA1J8B%3GY4R0!{6JLwhM{{*#pI;fWvQ@F_`mYAcj|9zQW!#fmm-7s_SQ6B32*O;lX zRsWz(p5NEEkPzvf{y56F{@0S=&uJ~)xq zi)BA|Jw@HXkv9(ZdZFt8DM928i$f&Z(F)K}vmg58BernA%K=F{u|g&G7HCH(ZnN@A z(akyOJoA4>=3gV>lzQJ4A(-zW5dQz`L`?OM(vXs+^%@i0C(f_0o!Os(>A>US{stLw z7W_%jAhEH|TcM4R!QCG5$bl~Fy~y~s%MO_&fVn)cO@JqA;xXlIve)^E1)-l&Zm z4#Y5S|FpCu zlpV)iJ_xnC1!J?_eqEQl_dYs1H)-Bkb3iKau=Fj;L9!;$3`}Awb^EQgG`&BzZQs@? z&Pc;>y!|Ssb)Rv*Kfjnf4ZDz1N{-M$j$0&I0hmfDHjeNaNEcNh{RkO(;rXQ^dPgKy zuLHy-p2bSep@rdd;Fe5y}ZI9Xq|F29fmiK6)CpvJG8TV;n| zzq-!vD9Xndi+6B$*l&Ts*r38Oi;q>5k-l;Ub17&~so|Vl(?;~6_Txi9&>tj4mm)zT zpiL=NQ>j7I>&9q`ASu8h!E)Eh*VBAWZ!br4alGPp2?Y!MD^UWi9Ktw40+w#uI@a4{ z=R%Kp0Ts(?o`@}h6ukRMNvOGbo{ayxsuESr3QqY(weWuT$L7{%Y1(hP$ojo>sQyy{ z!`#@(UYO=(e+TGZX69NS>53P`Acu;&kTXb-92<}DrY}EnWXF5gTaxs?laU?jE10NA zSScwO=`GwYZZ58N3~PMgkcVTHN=yL`PS6n)Y6cq2if+D?9_(JbDS+Fg zU7POfGD@Uf#2)-RJYZb3II}wfS_MB=Exc=V1Heo6BQ3-{hGcg=>o*+m{kw0vB}2^8lh*YAGC zebrFG=h70RJ*|cAqi0I{rv~q__EG&(XMZ-evk!y;t{w>PS50p=@c=uQr>>G_SxF$^ zJnN2pV;6;+l|?sABKD=dY=YEN*r6XjH@0nT?5i$q-p1(8@QUQ;licu2n9IZ&JI=6w zeyGoAKZ}4pI1g2QjWS=`^@WbAAap_nr{%zpF@cj6MKRP5wP z8j&5scU|B8t@HI)aUqa%zbN`UbX9zR|Hpgo|CtGd7V=vNP3Y-8)P4?6O+!Nrwa8C1 zzq#mS1tdOmz`;hIEX8?ieT2MhN0r2>i>z{IKYz+ahytcXlWS!;d)g9E%j#XWAW0VMp}4 zNrkWmUR`pLBB}QvjTW>@pZ*5m{yJuTk63K*_YpI`KeF%7+Rm8T^1ESY>R?U%kLQk+ zt_AgfX!-o-bJhICa3c8RHQ+dxBc`DN78dtM;ug@dKo4&p^nb#&7S5P7^;bUnaQsxrz(TR87dzd!bkbQ+H@ zPXhRTGsn}xMJ}YJ|ISI@QeWbtMH};OcEEiUoPY$vSYF%d>u<;T3y*@Y`8FJVzX0dH zM@ESMtK&F2m|9Ttn;8B_TQX3=QXWC}8*%;$Hp+41913OiF)Z z3dCFKo75wrCoOpmybl%+3>N^3tE`j>t+0toJV6&M>6y%0#Z`R{O$kB$h~9WorIAv8 zfjp(f3a)S88}rCbp9P&6MqF$|4qCJON8hq*DWm$rXy|Vpnh?Co4eF({P%R@B5smaF z0xrZs8X=Ye(!T2DVvI&56vsYVudq0}13#f`;>rP_^f*6Zp9 z*b;%kTFDPub@{NC28=o<>eBVACD^>;FV!Q8L)_sJ)=cZ2Tth~q1(dE2lLsfx`Cj$T zZ#na;^wK$IUnaActy74jeJ>F0;k2@u<(7v1~F&twu?TDw$Ze{Lan4V$}kl|SVB?dcjvo9@?iC^m;nzNxVATJyuIAqGw8=)`pA>!q9 zYqy(>`2&6~GL^+jFQ_=HDb7y2J;lK%_xU(anO@M^ybr!v6yM0U?DsB#?(@j($hm z?zgUCM9~qFy|%dR{0yDgK`8vUn;h3|mwNFoCry@K;r?fgrs<87q4&MlIs1KGi2lD^ zmA_D!r|gt;FAY-XRn>E^sSnKVfIvUw4G+G^?rz5!j(UN4QX^paj&~C#jSa?@q2<<_ zS4RZMPmtu3+qn=5XE0Y>=e-+FlvL}0xotI8g4j`0{j(VsRFs056kXu=8lB(1mMPH` zF#%!)2HSRi1oA4!j`phK`t4v+qjLMILcB6`ox13}X%u9UYB4f6`N`pAB>RM5LjHpr zqtliI@));HaytP^jXA%|1R!9jQW}yE`k7I*d4FgZB|473OzFP|ptWbJm^GE>L+M+j zlpljwb7hZ4N{Vfr4Rsp#l=QP%fY4^}xo$gFQ6*t^_~&AqttME>aa^$`G)!HmqVV7A z*lUg;iLn#T(>%V$CEiSDLbZ$*=Z)xpT|3iFZ^npG9%?mzLRu<($t;U&*`7KRWZ5o_ zc$J?5oa0jsF0KCZkmL$!Q!DP~FI(DBNos56t?~ssc%pw7-d}Q>L^uM*_Ot$9M*2rQ z8bG0F+TVLsKlCH88w@3o;oo)7ZP2r;r$Pd$7&c8qfFo~}&5;oNodlk?@NS;)<7jndy*j@p^T}oS!w>oG z^Oz&xXS<87W+sUZ0!BWRDL5tfElU^U3C9sGr^O`E+%)#1vr?o_9KvZn!f$&Z7rQ{o{^F zcbN6jz->Z%1^ZJp=GYz2;)&vYT+c1UF&X5iTT}cJ8z8aDV0=TkwtV9j1@;id7BR zvgGY*Cv-BHPm`y>Q=AlLZ`;SNQ_1R7JgMtB_!*%HK1VJicROnyJpCJ`sTc zY4Dyli;ePgx4e zrBdD5pqUXUDPpr1^zL+NLw{EBUQFX`jeqwKyJ9nQIdVM8?m;oC%*N5 zXsf1{5NUGo0N5`pz=fL{V6Xu#9;&g@5y12^z=goAc8%ts^Z*wpH)m|S$BWZHBaHnG z+wiN~uC<$!ORAP-j>fyy5<9yq9dx13^tRWmOx@nC=d9z+8qwUqCu6LBtHAVVPRI0v zKzkmOu~F zbWnGk1{hJ=I91(Ko}UR+VRn^Vbp7BwLWA;EY2ixvm@v2qX56R%qHHctT_`SuK>Hl(iRuG2LukR z)#Hx;(XP6aZIsXkTjcVqfBh6>$+kvaFhzMHdO%1cEXD?ab?ncj8=a@S)9qr$?#9}a z867>&5OCx0?I?L8!58Zl%9O|u5t4%a;e6U%=*~LFm_ub+rzI8ZZK@g&0`OYG-NJ3` zJwaIGv7)DVrlD-OO$hco78q1XirrEVr#9iz*gTXN?@G#xPiE74y{>PW7QI|$UVE>% zvdPI#&x43Sa29=Q#I1)BGNyJeIqNg=9Xx;F9~tb=@SQZ=YQ`2%WOlR~0@gu82Q z;{jO3V5=j}oZRFBnE5Q@i=1v}qjm^q?=!5&bqOt~r!(50;qR_!ADFOK)sB{IJ23o? z-~UFn^j8Ec2@cv{|Bhbu-}RgS@zx3RQfeAT6Y)kSxVFEzMwRr6PEcWgBFA2Fa*i5@fuTg7Jx0YC9{hs;?V&=& z-K!Sne!>8@!9u{CF*o?Sm?oxX5>~zTvq?@D zfu!l^s%vWlncK=c$RK9W6y@i@H6j||F{A2IybM;d|2-iRi0)Q#Vk|xwUQ>Obr|)kI zF=e9P@1t-Ba}t%9rZ!gr88o;1Ki*!9-gz&@aMU4 zquv0(hnZH@^*tN5j42TpWM8!)Izmy^BC|u85g?$=Nf!^a-xO1V09ZBRd2NZ^b$Pxx zGO8YsVo*1ED@!BEb4hN&-}>UxC0Q!Y%eMii_a^I`HC(58U;i1FIMLW#7JmDP(06eD zFBM?_a}wz$#<#FWElyMYryNA5aY%O+5$h=w=DXjTlOP~$JfIn>L2bd zV%L5)+nPWfQ>!4Ej};J}rtL8cgX}W62gA$!sP~|tqhgl16d~0PR9zxdBHr8B&Qpq0 zMlpotpAo4QV)h%?_@G*E}7Ty*8ZJ#QJDAnC&Myhm9ivKU;~Md z3p2;LWxXXNTQEYp(j9X`Ig{pv-F>$yHq_nR(!Cc`#<3p&VdajUo;u#KQ+juxiK$bA zq>NcnvM)HO7ByBP=yoUr-GmeuP^tW_&Y}{M*Py#Ss!v>9^qtzk|d79*+wAlQ{I> z4F6Y{$cXJR+v9->x(aIdkNop{Z&n;OM`pS9`xoqlt79=1$+VZED`Z8RbJdB#ZX3%a zo|F-0c$ReUO@QhO!s=n~1vYPmmbd_6Ras@dGoq-j2bxfaReZh@n4C|I8M^In?tjVC zE42jnsu(v@zN@zce>8?6JEImu>kHcifS&M*hBQO+WLQb0(sgEXlE($ZC*@c8@6xdp!kMHKbsx={X6$ zz^5uG=+wSJ_tfEbei02H`w$8I3nKQX7KtxBRr(|MPe8Bl?~VSC&;{&`^#0st0E}^( z8R|LO{AV$u_|NO};6OX^_GEYvmHgz5cz)6~(~JCal6?7$3;y%|O?s@oJ$hg!!PMtG zWYCfA&) z>y&mgB_fGV(ODVr$Tr%AEas6+@U~2rnUza1*me*G@=is+Ofy=}tzz^@f zHWO86XqhHGa59EG%R0xW!sAqPE^@x@2weBV=De!0l)`(eM;J7Z$#|K?U(CphGzkr} zG@AmRygpa&wU@o_(82rkDh?j}AUbP!((JeBBv&(3tq!G@IrkL}gq_Mt&CV&XyPGa9 zD4?4`LOqp6O2WS6#a%iM58Gm=14IdJ`%>_7>gxrOXbdRvhOTZ(_Uq1gjLX* zi6m{*!K)}*B(zESpz#^*ykzYNBQ6TOq<+Lq>S>Q7+Mxt8&}@scjVtU<4{9Tf$*H~A zQ>CNf_n%gR4fw}5^;RQ4?xF9qzLATI?=Yj@Cu#3%rRZE`Fay6jz?#ebc9EOSy@HfH zS8h&xi#NF8CD(={Y5wJZall2yA`y+78cjrikRm&ezlp%Qx8%N}#g*8-Z8z3bNY&K5 zNO(``v-z};oWB(ZF6fQR@-tU6UN|ud8V@h1N;@|3D~J_?pKiajdjQNfQ6&~eKkk&hSyYl z#AtH+qf}v4QD2qhojB3tQ+8uLv4KKAFqkQ8vR=gfo&<#Pm zL*UcToYz!Zs)I6h0y+L5^+tZGh_>9_v)m%}G>Lht5a<0;Gru&X$k%JOZOn|{6`b5( zy*~%KdALEngSHbuy2P)^jI|Bc(ew(F|GJ_55s;6j#qO>u0^koi0L%C9L(YHicK(E% zq{OX13m%4ks)T*+3@U`j@_D4y17VHwhBKztEAOp1Rh`HUO^X_I5E;# zIl64UZXRL(#D?95(AVO`96f}?rwfEHF2>yvjsRtY<)<()RcE)d6wMkR;n#CCc7^+} znN$Gj+$Vfd#7`s_0=ACcp58~juW)Y>BfgFTA&(d@&xC=ZM&%TkCN^-}2#>pE3YSo3 zkIxV2>G8eg$66Ba1@{XgsHA-L!wWaAXR^yDhPjpP?iDp~j8-&GXpgn2Y=g%`m9Q2_ zYvh)eQCf@Y?jVs}F|J8Q6e=m-)fqIBL$7~~#zMgq2`NN$K!%ot4*?Iz%M?fa;qN-Y zsqOMULR7e}5W>R;{#G}cWlj}G0q=9Gs#^lNpFg^_as>VBfe}Wi+8d^Imh||=WaPrt z-VIBKu4jQ*mktUjztwx;q+>p@x3)1j*K4Ekk!PkyvYch&hx-=Y>bMnAh{%qO>xu;< z%w(c7-b4DEbeS=g-;Bk}DQxmDoXj1uw94bNb?4N5w9&$F{r-Ir0bcj-z&B^Luw7jl^Ke>Lr7%%q| zk8Wipzo`_ie{XqdCR+{iT<5DkYWWC9WcX}DSngrJIJ6FSZvuAyWp1;bs=6t5e;+!GIsD+A8{#b?GtHa`f2o@_09g_Jzdm=T7LE(nPw38#&Mt zvUE4sQ0)Zmw??-JX|xJVn#EIR%*fo=u!nJatFhAbrj(!8;<3X1dbSMy>nuQXqI8Bz zv9=TRPk}}eN){_c8H@r`#{PCE!pNPs>bu!Ann&Jt(S94EEohxhJU&iO-~u94(R#;J z?_$N+uDzwwbdFWmBFd)VanK&a)7(_p2;;G{nhxDX3I0|uAM?wI0{ASA1^H-duwwTN zj-b{vH^5`1*AUK(OV~@1l?G_e7N&hU(bVVTu?-?3EbavjDR>y1sN4co_dYZ~29yYw z@+e|TJ*C8G@0+Gci7wU;(+Bl}zboM+g7OX3*0v;*M{kz|%k4L|`#5F<^MN+DD8S;B zx1u;<_u0X^MGigdWqFWW1$RYO`W1)pp*cTRRy#k!0aaz* zr#n(Ba4U+sj=}_P9Yj2s*OEJ;o(Rq5D#q%GS3%`K!;P_g`k42z#-xC%Gz7&TbFQgi zGS;t7YBW7+eXR7{Ud;w4D?)Oz6b(m63j&*^+br}+XBC?uc=5~9+e657@wN$XY3|L|+VB<^2gdTtzdT>9$DRYD*9#+$ITOU~E)^KuWv%A3sIeA%-+wY7} zEZGv91^Gqm_iU1;n@YjEG^JuPu@KR;m}YX(V>Y5Z@m2=ufW6eJk>%*KZ(I|WI6=2! zg(6U6IZ}YK`6g;l-_-{O$x&$LC}Vx-}o9Tp066RcoBIw)a7>jZ8pc-)5JX2 z{4`QScZFsx^YKIlnkC}#I3pY-8hjOPsZM51@sa|lnHBl)gowr9oHG(ofL0Jj0i1I5 zPJT%DfE>9)sQ%S1P8l@Xd@}o>IHNEQP_ZULfp7E?x3fxuEe$(?Lc$8nr_Qb4)6w`( zQHQw*(AHVv4Uq2Fz!2mRCgkLMk2iz%rl9K#8G{lL3b#$!CZNF<qC~T z!OzLBf(khD5E6-35vxk0P*S%sNNw(r3iJFwQ@MN4FB3kt^;pq~N8WX>@m}t2pX`{; z?-D^AD1H?VpCzWJ7Jh?)3;}pXz2AxTeVmh0a-xc-XmRWICEJ77jsYjADlB>f3dCEI z9ISWC0bwbF(DmQoFmaGvBC7CM_4PQxtkEsLuFp17 zs$yE^!1+q;+)qvdc zbID(n1Jx@1Y$pwZp)mi2$G!m$9bBhkG99TYrL;T{jj&E^bq zDp0eVpb80L} zeo-DnXZpLzSI#Srsdk3Xx7VScUz~SD{HTnHF{ILNDAJ9Dnfl}zg7ZWil8Zz_*xZA& z0Gn>!jSk8X7f=W=xY)eaqBOofgPa~(Iggt8VV;<&w&WRuqz9w6N}sh97#ms@H}b{s zD*ZAxUF7=;SoNw3u}}ip8@s0>2Y$hq z?3~p2G8735bN%UI^>74})y4W`M_fJ!s`P3h-Kkym;SwbF38F2$g=xjUQmpgQaS8r!at_f)Z{%xL_FZ+6{%1z{dld&e_rap zq^u+3Bqx4Ph%p7)kuR$n-mMop6_WbW{XQE|^KP3Cfy#tG&gotQ_`K3%1d zK~ljyWwJS_3W8oZvty#7tD8woo-l&M`c7BL-SRQ~ruhX}QB#LFP2vVyur|S1T1Iei zArvvro1I{fjUvy8Kv;Syquj27_bVNRKogfV8#hkBTxO1U{dsj?Zlp1FAZ;W>;zX>D2C3{^$_<^z2wfHl+Sk&K->um{tz?C~arR0~NWUui zI5gN6UPFhkG@=z~YB1)KtG~ zmEo17#x^pR*f)ymwj@Ut7OQfO>SSRTs(n%6pU%{hsCjE9u@V%k5f@BZXTG8x22H#? z9GEQR!u1bRF{CRd#FQVMZ+2IgDnUxmJ)}z^9fzJb!>3ZyK~e1@HT<%qc3yw3=fpp9 zlKeiIBdIfB(U97E2IL_@Om>NLaqKw|gQ}x%19eXNQ%_8nHt7)MUill#0bSVywdB<@ zzDiwIxe(OZ?0D*d%eD14mg{U@-@^W{&}bxazs21QnUgn`PB)t`JLjEK4vjF8)ag^~ zhF46s6ZNIw(!#y?c~Br)X6?6vCqTu?yuSxuV{pUoqIPb>F4+*D|4=2orz6TI+iPVf z$J&GwK%N$*W~wq?j~g7CD4M-1VxprmBUPsE`luTdPe31?8{S#jzQSnky?G81|WFBpLwMKi2#(2Guvllpb= z1mEkH$)_)Lu6zQ2vso5TL_d5~nbo^&?9u;(Z5XoK;UCckZ-pSh)#4b5vC*{bO<0zC zC9c?cvlhOmqQYW3T6US;tXUPJ5K|F`uE_GIX+>uaB2^0=@H(f^?bc3sgOiiL*3;{0l)YseEJ;Jr?hv$Z>8Q&U=th*W|ba?%-%Y$(d@eP$bo z$9A8E-LzZ~B-J|e*pOx6GF=<=Xm#Gu7T8scf-6J4vv!Z)cXjrR<>bKX&dtdhklVG& zVQhN}cS^LP7D?R)e7~MB=YVcNYSMR9e1j;USQM8!SfIHZw7Xw71zk7=OC;0yE7TIr z?7V=``R3Ew(uf_q*2Q!HYd~q`i%7wh?GQnQBN^BmPtVosNx%ZH zCtNEx7CR1q7r};fpX#_(z)@rF@Wog4>yh2VhjmURnt&M8=li6>bQwigzPz&adA6_@ zzfV`Q7Cvm}nNzEkmAnj49i%6y=Oqu-2cfr^>V{YcuFc(Gz|g6Vdpk3KODA44R+gJ@ zNV6Sy#_cEW_8_)(_El!j+MMgBWhX>EM>Oa0J9YiJmoL1T(!ksk0=M&&=5izM{xM{B z6W+OjeECh7ibeW)1Mjwr=L^N+M$?!)cQja|i`DhPU*~Q9a!e0POun_J+Ub$vn&*){-6520LR{UQI%A$B-DzMtSXD#Fr3`Zws3F?N3y?ZNCZ5zif)$|p+n7=(K1kRN!v4DZCafU-bM{7e&~T|~j?3+J%U z8T;bK(iYgUIE!p$BAORLt)F$>w@W~oV@~VNfVkU>)leDZDK{O7)1d@=@rFqF;jh;u zrf2~vhE_!}93zA>(Bk52`m27?WO1qiYuoH)jto??hpr_dnhGNydg){_j_#_f9KtN? z1!}nJs0LUbswQ9sKE_%m97mn0QsN?{^z6dK{bZ?PCRtsXIch{AM{FvbWO9CfgOEvq zBM5X7L>7PLF%X0j-}HWlGvQrc!2S5yk*^6uy|6*qkVjG@%-~8VsCHo}8L^A`4D=`8 zmP_Q)7ZPu`n4~Wo+EfkdB7*u1mEKCvV8tA1+9&nnS)Sd7Wyp|}8z>-5KrRX|79&HP z+0kW##YaUgd+cvBIpM-uJDWCUj;=$<*FdB&A3Ba#dQdiHC_h`+YenlrnC5E=*UW|q z=ZD4WHo!YhtV*5X`$ix^o-ySHnWx&9+sR>VnA=`8P2*XotY+gZCu%NHnxHGG=zp|p zFWO$I4-+h}o|P{&|HSo2XD1AP&3Yt=mecrd$hJm#gGGF7O%H=Y7tr!*noz2e>ci6P zOb+74(X#%v?$>r*-N4)g(zp$t1FjX8_=zo+hsfvzY?Ue*Wtiugc1Y{i@Am}z>hF*k z>Fv}~f>QAM9+tmD+Scb- z)EXhtOHGIr@W@GcZ;hw7l^y9Sz?KCitW`+YWk9NSAL)YO)bhy$2_Ab?j{UoFpDT3@@h z(??#}+#Zqxn1KM8hd&8N^eX|dimkVqoPC*wu{1dr0WcCUG%yG)ef3u{Vld?||7s8a zi3|(H{QGkNzVmspy(N)Tdwc*Z!$#Jn^P)w?$vXlX za9Cx?DGbq;Y(zCz;z|SLDhkIp?JF4fj;|O;g_aGs(-=4{BVZACM)t&EF3n=6wx89z zznPvg+H?r1_bxSbmJ8ku7}D!e>ii}RpK(E59%Oy~^=bad6HM0JnGX;$Cjg}%-QRv1 z8GUmj14k(%M^hU^2N5TGr~jz`{sSz8?SV8vj{J%j8VW%yh#};;3*Dyx%*|USs0C9a zrB1@Y&QK%%38GvzAB4rCYL0@tZSwrJN>gL=5(A8|fD*N3!|8S1;gV}30oSLq5|}l> z1BPvg3InD1ng2N&&+=zmqZx*hj_P36!BPA1lzrDZ=R;AMwGyy_sh4#pGwfKs1Rk#d zfq=MCkiocvN@}vJ1+|8z0Fr_luoVq9@f#QH;^0Z%H1iEdN6_xDfMhi8{hnP4uJ zK&m$jn5eXKeIUs5IfOp%;8Yz{oW9atYIR(r>7b_V@z<(q37Czv-a~9^A7g}di0k|n zqTt-`EfLf#UgnGFN2oM2i`1Y@nDU=Hib(ZmrhRz9JL8ib(60>&Fv!LMbtQ!$@yGKs zzKm=Na%#bjUVOJEDu|fTwC5CdpWIL7RUOxdL?*1MBi3@m8bwD@#J0#C9y0+3pY1{2 zs<1;CaNowX=9o$)F2(U%D-?-eO~K2)X2vRFfJKELmI(4euem|8hh_$58-~8_Fb&cP z8egj@&EbbNRz8Bm^S(G^nmFDYr1mTqp255ZvE&|`2n=zYVpQ$4M?44Jje3Rd=J zFn8E*x{b1w?H$k}458eLxw;kK&N{yM*ZGNB-H2v^Zp}P&FW70O` z$RRRV{A9O9=P-eU}KlRUOP(xoQ3enK-5eYa0;N z-&59qD&6>%vmpe7jA-J>#w}tFBgtlSZ#}L|lGw_CGpfJpuZ>e-_WjPcB zy%Uw~2ouI%h{Igq4tGJ(e*Fs!^T$w{2fk~r6Kk)~L^LNwm#zu&)xb$z8<3Vf-iai> zqIoo!CZMx~jC!yCK-ZGmTc}$?iHLj9tR(L&!RF7Li7XcmaljTXF3*Ms4qh3MOe$`L zz5e_xXlfrNEKBwQ*eh{ZUJ#BH039|S2idAQm4Wa<)(0a`Qjc$tIQ%YmV{*uxEh{mB zUsokBP+egxPpccR4y|LtvMJ-)@RMA@FNUIq_kfbI&acZ4+B->@vQ(gYl7dzh;unNG z1)Ouxr{AFa!4;YTdT-n0h}y3$Hjaxdla4uSp0jKh8t|#yyri^6#M0Y|^izv1iGhS; zi13AEFuRfzK9w}sie3&^wVVRuqJUw~Wr13?QmWCLAX~>RWwg0h#02DEflxouit`;k zU^k(6+Po|2FKdKEh$t>@Ka4E=iW~Uecf+!MyC}%5W}O>09xunaD@dKVwBr_`2b!Da zIv7qZMLx#8K@~IGRV%VeJ&TxePuM!y(%Rwf!yRk0E`?i3OM6N;m$V53x5y7=0=;Z1 zx5+iV7+XabCkK!5a`*CmC1)MaT&qbaE*yt6J6ilco0_SY`w0H!;bj0G{v)@YJqSRP zkbwH1BDSo(nU$HNnX}P<5TcTlB^>6Ak-2nm(8;9v`Du|!V{SwDy=n;D4e8NM%W+~fZFtIx`oai$!3bks!)4i)c2jGRdV{jI%!F+qLlg7^B>KYC zLw$W7s^$6iFgn|b-xTfmA+Kuei(mF`E=h;ZyabF`t4(WaO#NEJvj#2t7tDN`eZY&hodP~Bz2&Y zV~$2n-w2jqXSyd+1H?Smw60qQy9m}8I+pqE^#GU(#1Lp}r2O}dN-Cs5NI^xIZ9{aC zZ}QW@E+DPI?EJJSi-rXvu z9UP8L+tN_t4cFy_sSQxk#>nCkfJx#ol| z&o#L*@!u13$<7YAQic<&)%R|-Q)Y$j6z?JA)}uWqceEr_WAhFC5KW>#I%?>V2CX#Z zY5h6Q6>7%0H_Uq8U^!UA=>US3gMWUCB`IX}(0>9(uFXpzL(XO~z z`{E=+ks3$B4R?qAk_o_|b*sKoo1xg_QIe`!`erauMcKw6Q;r~Q;iNT=W)NGb%2kuc z@O#u6-8zH`GI*ymT?{h>)r*gCqq3r8L3#3pXl~>!bqy%Ny<;V z{n<9Y;X9=m|EY;ee+6FxxgG3TDi17msCpeD`hESbLY%D8Fk0=ig(3v2x>7za6Z_fB zhgS)OrB{}0JlZ#&-X3&}i>7yWNVVr4#nNhg-K&VPRKZhpCg@vt1Nrn)8 zaHaCQB*|<(Rio~li`@HWhV#M>ChN)@5KnJzWcT$N(Y6w=l$sGo`4nbRbi_LB_qR0j z0CE>>5XmKWagCc5a`u;Tt%);gF1t<8tE`%oW4E1PWLH>~tm6T?O{$OYc3fH@X97I= z`(qfJg)E4#7{#3=gLhEUL)tt1SlR~LY%;4}rUW{FrOs3dY5#Th5=@gG&QnbY_;Yf^1qa*^ylW`hy6!K!7@lfho|eiF{rfFd zL_NxgI#qe=ch$o8*y7E0Zp`*W~tN&QPEF)$=14vhm0B4u}K9m28 zGy4a|qXOUpvwrKqy7oc8muI6jG@t=ptkPgKt3DwXtwB(ytVR>hBVwi}i%qP%#Q*dP z!IdY}a6Ttyzd7r`m~6*bO{m-XGP$jph&58HDG(dE-E?yQeLZwP+w5!Dwt8*zEI+vi z^JtpCe7Iyh%C@bLJd~l7D&MX@|9}EH-w`rn5(TKf83~IDf@WQyy^w$a0|uOU{CYy9 zf2>-w{UZM$!hjfpaym-gjxMWixx6SW&$Pc5%;yjCF1&*ZlQAlIaNMi1+C;_DD?$4~ z29)+v*Z8^p>>?Xs)0S}PWM27ih1=zZ6h$lPA<6yiF&tyi{ZE5&wxSlR}kKsZs608QC}GwYe5b0_yBgVcV$nf2}URwwEols4&SAxZjO z7sTh*oiML(s&CK7V)V~db$Qfh@HPrI`d2|N8GK8Xc_@tj-$or%7$4dEj^Pw zXp_QMr)R@X&jkD-u;-@*n`T}{j_x#>I@M+qGnw6p^E3EE(7>`@$y`skfk8=S-r(o# zFV|7T3I-$1HALoR>P4k4kXdyPTcIYF1ylu+p@LcG)GW%DWec?#b;;xL1QfC^3B1MMD2Hb9d1WT)3Ih)_TE0nQGi z0v3z1sn=6~-o-1b@lF=PPA6&6FZyH?=+sW`Ycg>aEv4feM&~v#@KT^jl3UfKczSi= z3<{Fxy6xhY_0{#N!$WDc8AHO{WMK=ef7kE228@Nv)q72-7M3HqEega7IlgaE*-HMU zZCsI7Qq8$8Ek+EMzn&eh1kYo!hZ7@uiZgL< zxYF3HodRcjzW;i`vw+;yRE*f5fZNZC(Q~gD9gPfRWZczVOB9uGW929LOGe10fWCth zWpiQtzW05TGYHQcREe-8JOv8h8jR;>~GhELM_CwIA8>!yJ0Qsmh>!V@)TZ>lKn1-IZ0JVZbztvb=?F3}77vcEjxtQ;=5@wr`x8IGiaDj!*aED~?+Mqif1e(O) zRcc1s59W!!TgDd^Z^?fUO8B01RLML>@Yeo_g{38PqT96QBbe}Rhrlrm{p zRUn@LSp)*)Lj8XvlRpkyD3;Cw0KEjc1bp`OC0K=Hw>l0_^XAHmCNmqLskJQQ*BVOK znvuOO}GR(W$?XjFy!ILTl4Q*UPk`!CBvyz$spE*NCd(~!pT+r2? zsltWY$D;XX7Bbf|1p)}62=4qpa5&eURx&pyS1RFK=eCXA7tZ_SGU@psOktqSv=X zubkrR!e@qw-M^!59y7?jrGU?f2MB$CKgFkD2B2~Mw^Nt#W7e2-$iY6~P=@Rv{8jb! zVi}YWN(|~qAqh^#N++{@X+u2P<%BLCE zl=0VlgB-%%hZ=|3>_rF%VDq2G#Owh~cB)HZnCs}QDpC+{Or2W<^ zaOYX3yOZx}sXJ%3j&GErWsL!K_YSinx@>DKd3NANoMcpi@yflKv)^nJ=AqBtYbTXa zP8>sILw2))5v)nt@XUVRB*+=&3d<0=wp*tNbY*HN_M0>kRVvof-!q+KMT>nw*yM*! zOW)WiuA$GS-T~MPML3ll%XZA2s*vB~Q$6RXuj&Yb5$qX~a@H>Oo>EoZr)|UquEOXc zD?={puTYhFmV?S~R3dRpq*AUT^=)ko(Jm2LTc2j5bno;m!@Mq3tn*5lEyglZ8j;y+nt_+qr=$+7kY z_C4r?y^99-=@WakVMpaN` zzU7Z@a&r8IU|s!^Qv0tx=r-$(BI~v1%wvnsUpAjHH(kra$b^w_x`(d$=GoSSArnDZ zR?^rQ?k1*Om|ypnnh3tI)QG1#bZ8lDS)HqOTBt_Ta1PZ+Mcb?lCSR#dUK%Xf2ciKZ z2x}Z-%~ea8EG<_w3HHU{Ns8i3X(W;b9(#?|yg}hr9Jw$GA}Hkkkd}R0TKvlQE9;k4 z8Uj@##NF?R)se@8H#!ygLEoE%&WC6tmIEjP5cxfHBE$Q+;msT}6v#+~MQM}!v&1Qu zP%u~w6g)%7^ocQS%eJ#@+9wDDU~*a|>mic;NlS^)SL-Pu(KBETX)D_^3SC< z-@FQ?cz+jJLaV^}AC1U!cg9BHwyJVT-)fi9;~AdJlyO=ozFaa(dJNrD)>%hbkwJuE zrg*Qe{DS^5yLggEu%!5#`og3@ilsj z>et4qNMDfs0cE!;cN(m!Ou8;u)T@yZ>LtJEH z;>46vPc&#P%8v}afD|c)cQET~VZ8A>8~h>mUbK!tjdp>|la`5O!V*Nu(C&BzqMeG{lHBuDznH!%|$1W7Wv57e!e@Q9ErMMql}isNWN|Jnq;p zo)C|F0xY;Ys**v{Mt6*9n}fm>ETrHP>-L>i;_vYC>I&heT~*xFfNd<;L}IZ@qbOnd zEsl=;k|6>+;kHrR`V2V(NGhknkk4mj;)Tl^D!yg@65Mz|T&*1zCs3a?9+uR=tmMVO z0OE9j(cogYYUxpl|FVPwK^T@2?TbRNQm>hd|Bc^QPbjq|PNZd04f6H$TCQ9w@?72D zqx#v~`)A=V=7|uII1%%X3-{^*R+p>h3+~J%EU{;uR-Q`eW1y~ft;jZ89Jr})m~|~d zgPPJ&$MGREG+?T6~JJU0}Y?Oy`I}2 zX5D|{Z?bLDK!BNXVCXRkzUhU*UN}a(1$l@tI(4gh-P~AnRT9?b^LVe+Yl;uwsHmhc z(83^GqxQO-evv&w2i&7a&r#>*!VSt|+;CX8u4ARA1R%sY7GR7@EOz448fwfY$YtPZ+1!f{^V9GO zMDs;h8xGqVzN>VOkr#5@X~v&6-BS&GLmQiUh>a1e}QxH z;EeU$hSI=r4=3WXLx=&#SN$>Qvg&v%HsP{Ay(fn)+rCj7<0H{h*Y`@m$lM9MJ2aGSPavi~#QKFQJyF3%VL1#`pFe}6c+nxArEy^vC8D5Hlw5$-wn9tepD*)p$qW{~fFRJHYDqv%1#Aj_NWap%3>F}o!t75NbYx|#3_0JCc zIbmcj3yzw+(AabkaS3QY#^u^D-)Z^yFGPNfMbgi-=)D>G5rT@zk(4gPb0_d-K404R zbF<7~1&rCRM`QHemE~b-0$!)NOdfJ9$0)GTnVeUU$BHX%0EoOv-R5i z4%&(g>Veki%Ch%V7rGzUi)t*HSj zgY7KdA^T=Up(O7kGLrFt(hX@^C%PTWlX;8gqZmnOS#8>!ZH06>*F3VyAqeYQ!ofhx z!jXfSVDPyDLEsgHa$NjT~Of>U%?DN(^g)&`#+fb1er2b02rJ zfs&ij{gh<(NGqKu?14F!)i0Z`pta|(*`iCIVRRq}+lPSQpB!F!!hei$7SuK)Neb)J zrFBz)cV1XKrV!WGGLrB}Q`TJF#SSKh&!MBT&caqt*Jh<-*Jna$xgWnHf4uGRYAMU= zn(PN@Ah9M~C@oR29vYO*(Gni0@h{_r1mB@2u$zDcv%$MyBM(eZtLt} zg*nCv;94?OXpO{y!KPd%QQldmoWeQsEZoUI82K5j417eZ6z;iT5)-9GgEH6Qun6kb zPPLymMolQGh6oK=+TX%onE99zP9S!sY#r2g_f(BBT0>#$dahKlU`wD13y7J&e5H8P zt%b54p$vboYbI#eDg<1-;fgl8FEkX_UT`EYvdK7$c9Nl1l&#gWXi(B=dRxv*?nu^Y zNVXj61%b}q?TW*VdkeYl@5;b-twQOfn#ta-I;F`udFi6P1>Zt+?S8Oz3sot27y&=%282tMKTj z-j9YXpMZWFbW!Ug9fBHs1ZdA}ye#)NGxVdBq3Rv!7;GC@=&iFGjU)p@BGX-|2N zZ02{Se#~_JZ|TOJoFL6KAhvY?j9ldZjgkNHpMMtJ&(VJKzWT-58d4}APOKfiD!|Dx!bInAuFH{8R{EJ$hm=wu_{FUhY0GQNWh-lA-xAEkwlcl)(8vgH6z%%( z?Tu=^^es*Uv?X5ouA)I43vg7x4me7=(3oku))*AXLtnF6@<)9wFKi=!b%_PAIlygM z<8C8O$zeu95~VRw`WO=V&l+jEDAJ`Q5~PJ{j0t5@;L$c|iaD@l+_cKAN(XXu=$P@< zjHJ<&=@+#sOJ`Aj@u`1LkGbbL^^F7FPI zFHy5+;OjX@DF-AW$CQ2ZlHFyFutq6Rs-3DvN!E2Mxc=y1VMzPyO zfpCW;6SSXmE-3;a_{Kcc)?KTZoB*ICRy#8iXNV@Pfp?6f!hK~1jBDBiwp9KLQraTR z!jx}aVqEtacV0jyP=s(TTK~898ppET9b(FuRL%KI-(Mk=Gr|I-QH=|?Q!6S@G9^q8 zR-s8`M6pHHXHv4|!Oe`BaS4!Pg=@!V71kcl-|ooe8MD6AWqpvTpn9ajT7htEFsz_! z&`Ept|t+fG8W8g*{=iC@<6i~gU;N^`uvWgI#BmOKN znm&qB!3eB4X-y$gU7&&she@e8dWtAKg4xO+IH)OjNz6`RYu_XZG~vEC7en|4+M4=$ zF2J(0p)D;L(gW&g{1A8GxUp;%u){Uqh`z(Kk%hxt()Gokj(~P_g%yVT0ZBq9E9cBS-Yx&7O-aIBM=Z zf@F#BgvvVNtgv}jx=~bO*9wesR@KFo7&SUN|enW7i8g##=^?pqA1iTx5dx8yBqbueInadz+u&@hY4*@>sz)-%I*Nsl)(n#0jkm+8FhW?8&R%jA8?+D>-pKw!~el8rx6CrRGmh(!p~5xs3!krhU#U+kckDb>aEU-cPi z*2BjguzP_H^>22q|ASTc*OdAHlj;43KL1mj8&qCZkdH9Dja}?gjATK2B=p6RCu$@7 z7fs0%eFM?eRSlAPL#-yNIl5Dgg2%_niyB)LCkmxzi%R7zXvApl^;b2&3hWVC&5f~f z6@Lo)oZ!yfzZeG_rF^f3JYl1~n|SrQdiVNywbAu?^j;1aFS0>gg>|TRTNmXiTM@1+ zS}QB1SUJqBG|HG0W-c$XnwYLUd_}gX7#l9haxZ$V$&7E19}P{Hzn~?Aba}*4h^ClO z6T-FPX7r5YtfU@5=u@yN1Ygx4Qlu&hMu?YH>&F}9BUfB5HEe`y9nBJ5e390Nvu%L*qhH}ACdMjUT)K+;yG!`eh zx=d=0sZEQYc9Hc*K9og1sX#+u1JPn&4RyG>;#i5VX7rau35XSg^Z{Nkb%74inf_2= z;sIt!NT-@Xf7N?e$Ly2vO2wG7y+hKx=BP!D)xEMk_n1icb?Wsse7p*^jXk7CF_R-b z4A^C2=f=6=`rNhfqPc@rRkIr=`W$fO>{{AgM4-XYz>v2@PgEhid`ONwQQhK5bj%qO7^4wNMGJ#w}diuv^lPklW)YE1=&7_(sq79;4$}A-mg+XsQ!3I+&(%?ymUl~)T zHRHjc>M5+LjOU8h`n|MPOmkdm$|Qj#dh6eXLP$rH%JxDcfvZNTldE^;b9$@7Bi-P} zSdWWtxr=6**`*ZN$Zi*03+97K$5Jt3_V1A*C3y-5^tp%LRE_TO$e!Uxnn9bw7xV_J z>TUZ(XTGVYD3VxV!0T&({-)#Ya|*fswhF2jx@r1$g{O!S4OOnPAaX$$ENABh@%`iq zZR6Yk7WU~Rjp&PgmXC*!uu>a^L_tn?ULczwd#12(4lq)y@r*Hge!o_aO{5HMLhFW) zy?@#?$Pjw8m}*zIUKv52ct+NEU|f=HZaIm&!XN=+ z9y611yJbq-!b)1S;B+@fd3~68=>Jz2&~(2-l=x zR9igrZz%JK2$1;~3cVkPUxSm!TzgS|6H5HtIEu}77TdDdL?-!uijm^3%)j>zbi(ie zEh=jhh0$VJq|IV!wQpEah`YcS;RErES!zawN4Fjv zmohr&C`t#j! zj>GE%Z-ha;L;7|>Y(lF;^xaI!+1oi8Q8cFT(KUK$A3Nfu%aa$TXJ_$e>vti0Tv(wc zGTO-ZQhgBQo6GBlD%lZe*3zE)#_04-L zy>EUbKAN|`*zfg~oyhHW-c2EXjX0zcm)I7M0|Lq;sqL)v>4Nu>)Fh3%th6uZxrOXT z6g8u%d-uuIjCr4GxWiyHU^LnvuXq1N%uoDu+-lCg6l1>Q{J&^>$M8(sCR?~W>exxg zwr$%sJGR}iZQHhO+qSJv(s8oyen-!|``gbk-^|`Wa{o_Vbrx2ws!B?0%K4C74~H7Tz6G>;rW#&3)WqO)HUAognBTv)?Hiu=mFe^S(#PEy z7P}&A%7QiWH~z*B%uz1w zP5ZK-hRq<|c} zB52qYRryJ3BKc2-YBD^pWY@5d(?&i9`S%Sf9gO>{+^zwX4l4ZC{&W8%Y?<#DaGjB= zGI^t! znCjB*W)D^y->xfsC|;xpd?Z8s%n0cu%Rbh`>z`r=LE9Sdyp675_5$rro?(S!W~P}T zLgFmCCCPuf2C4{+cc&!2cD8=O&~P8+N0J!ObRDk!!MRlk7s!nFd+T>anM0jN)UnRt zm77F6-z$yV>`MuS-y_|n+xmr@CP`l7$|9g#gjD7ZoI1L06bS~asDza=xFYDwB@ghs z-a)bJ6&JSTmvx8tw%bB@TjWQ9)rbOr`=<^4skN-cXTa)99}T-TR)NS~JhZJ)$d$NtUg=$1fkP#`x- zpMfSL#xAe$AQVYswZ0diA8)k*duuloKOA)6(m-CJh2EcK2RLi0#pp=oWysQgTxDg-8z)ESE8`$E=B$awd zu69LcPvn&qeG>ff(deNfmSP5+np7(1kaMF3&EZheRS@x}r%j*va=#!|B8N!bGVb_O z3!jEf5oG^sK%cHu-QWa0VZ(Icu9Uty9(Wbqb3kukfF7Bm&1ZZJVq{HJS%6wL7d72Mtzy0|oe(k+Jn!*QVV^E&M96(SkW~Hw$Z$xF*>`RojVTv`UiLgh8?)-SdCuX!5qgDjTBOr9@YXWS&#+@sT8e|_R_NEy_;1^9w!5Bs<&fta|dboDLjiB`q+xC z+rMzF`(uK3QIxdCvnoTo91%g_X3w*B`029lvYsTV6+qNah_45#eJN8}Oy7}Fb(R>y zHDN2BM%xir!yMtyflBqME*=P6rnzg(N40I4Y*OS{C>)lHUIWZ%*x1uck)bglAAIP(bbi7b90J)m>G8Dq<&V1)_C5v*lN&y1l{r4A{*E`AY zKXOeeWF3WCsZa!f-Awh8{C7MU{2=s~!tVRPyF$C1;Prl_$LGWq&&vr-K_RnogIz9O zkX9Yh^vh=9C4D?V2Tm;$-^{nWTmt3ntzw~QSFYxJBf%v+jMi`iHT^zyrs9^uZZIY( z%TW%!nReX}uU_*l&kt>?Ad;BYbCieig^N^n?cPP8hc@%xO5h|l_t_Q0oIfRzYOWos zukMSV03puXwHu||D7od>$6tTt+)qrHJ?ruM&_jl8^GqiyWyDO=mw2BQ;qP7s>^r(4 z?L6GGsc%haopog)@6POPgS!-N1-~eZuA}bY-1P<0$((!>h16#8gBiAc0);}Qg@`;4 zm~_Nflv@i$e`q5A7KjlXId*Ac_`Av9MR?C$bszrAH7oa>HW+pf=h0W8!v~XBDGNCm zgsYo#UYBNX+$z?*i%65ysij0^)nkz&)*t{0{UfckUoiT)0r8Sz`&Uz^6MX(IeuW*D zO{EbsN`=zdZX@7_?O4xO*Lf|Rfop(vojRryE}c~9owTg z&MNyyj8h$BUjWL?v+iA1{$&F13{U?wAF%V&8h{3%AjyCk0qcJm1rawivUW6cbOQh% z|GIXh02s3KBYzZ8TdJdKT9gV4gO*zZ?h|xW>m~h#2x%T zgJ~^=oJYdrW3wk&ViGKj*$YK`bTN_Y(3Q>pdO3Vt{blLaM^Bs7|3*&q+uVs91tH?# zzOA7lmIz0buwj8pzimBjLhR8)5*;j>pj&qLp5DYFp2yaDF~v8xF`0zQLKNsgHCPzI zN&`$PYtb^`*=xD3NxFA23Nse8UtSKwf(VQ>khbV$-rI2W^ zA3t~FaJEF5o#11#NZV)?V6ksqgGu8a^=mW1f)FDG97Th1}=2|AD{xij%O z_c=3n#*E@3tekqhmW5B-?G|xmh1YZ!6CG}M#>e#_#y3Not8$xcVn$%H;e(8p>NunH zfOQSIU2IIu($^p=#~=$r4e)7|1n@l~u}}egSM9v7%Xn-|m7rBsqt2bdFyafScR38Q z9Qe_BB0m(5t-2{lv5gz#T3rh4M#o+kH=nB* zO)rD#(j2YkOPA~T(Z%L1;~cx>i1;b=s4FBFqBh)uVY~L3KsG@52Wx;Lvt1UMG=C59 z!1{sK3*=Vg5{s?hcd~(O_oyoceML#H_0{F4MDqxh#1TVK;^$!a(fC5h*q3uB;?Iba z9KAVC-RTbdCPBstt2I;~%qb&998&kT?R}p%Ok*-$`@7uX`7cz!KSM#*sy?#~z+?ZT z@4)$Ae)Lji4vv4u;Y1>4mj5nvnHW|3ht3rA=^q!dx4sd0B{6X9 z`x#Wb1+3;Dpf=dhGw-QwXgWXr+^^U*WO3EwGXKeF6^GVlaR4XY2jInje`xTp_}af2 z?O)Mh#dQD|30b?i0b1%CWFs;HZH`Z&78r<-88rzJ2@wiT37RM78Uiddqp`91{r5NE z_piDS!hR%O=e$ppXK7~R#F^i1)~W4{t8QWuE!oV{5N< zovsBHE_<4tDi7C9l+j|Z&yUaDWy_cHf!|+Z+CXnITxfebm}J9)VgqqgPgwpyRck}L zTR}2I$j?#CsjodQBC|S82H~)eU&m<6Eejzehktx5Af;37Qi}m1*JW;<)MBq71gXyS zf%;xxd8D1f)vuED+gBY59y%p-j`Bn`7M5aEh&UIIaE5r);tAGa@@Q(Vn)Lw`Mje`j z-lrVs)VbZy0%$C2*DA&4y(XBJ84xpxg6!hC8w8z-20e{)3~_o*ecGvGVz!JkdwjJx zX?|e!yCOo8p!Jq4G9A$2EU=K{`IRI>rpH*jpoEOl2Srmz@o`@^_Sha2gc;Hxq(x@s z^WEC#Ti(*>{vxrpkK{C7nkx3<_$XPJ)=qm$Q)KjSVpr~8W6?6ZP%|c015pr4!+hw+ zp0_fuJJ!3_Y0lZyv|na;St<5U^ zD$U3>>r@Y!zUy`;oF7Cs>l`=>l?>E~z#HUJ($s52*@A4=UuO*EgMykbj>z9pHaGg% zXNT0t&;FTnjyB5n(ChiYU9;MT!R12M3P1aJ)>u>~9Czc20^j-O&^Vag`iO*} zml#7G6Gmob!#5jdwO5j!MZtP6>KcMVs~L62RH#{r#$-&GV^(!WVu}QnpXHs*x+F#=IW+HRnQnP$NU|lj$u&&}{*{B?M?HcADrx zMiQ&-MZ-P0(S#*jnf%Q?BRr`ECXRizhnVE)ADYIb4eeZXh918jo-{pRUkKLwy5`&YJ7rILj#K!KS1y96#J za=@?q-d}T8!l+8frj=&kB5`@R8sgxgqfMO&ftS{sR|M}6ADC}SgrQzcx1#9B)=*7_ z0~nhH?lvY<8SD&G-a~%aJFOfq3q67)MsYEmkHE?I`iR z{HZ+nu8Hx2H-QOXBFzx(G{y&C3VV~rc78UqYJiJ|4zmK-H%!nzH%l9=aqa~6x4yx5 zqVY|qBBq*B;mWaV5Lc>pj6MlogGQv?!%HHf<}yf8NN-J!J6M=%#KQLz2JHwJG7Z13 zQe}3@He??$S{*VQsMb5#z1Hmw(uuV_TQn!^JNGjzL6#@c=Hy1`Ffk7|nsv`VY}&L> zE>8?=eD}ANKCvfgpY6>LSzAXRArdHvI9zl4P+)Db0pq@(MUur$c>=kuh7;Ow8s-ud%F2l~3&`xN@T~ zbQ?>z52Mi->U?$)Rs?R{7$by11Tp7~>4FhBYKS0vgEjBYJmMG3EG#WImO7qrE!I{e zGuUOYgXQ4f55-KjJ%zANh%nB~Wld`XDa(a@PMx$ER7a=BZ|+e*Dg~^g`jlZSZnOOO zPpjJDB2%0NfY?l$7Iw0=g6AL*9V!X6?#l4Y`6LO%sQh z=(d!*WgxvHSh-f4$RJ~mrLkCFE8%V-UVlqNQ%}Wcbqw5J-+*!ZEn*Vs_7`Uzv$gDE z_AUNvVpN3XJwzMiS2%gSjkFY3ZCwrgAL#5k#xtk}AhRJioWP->bPy1>cjX>Qqt`vN zni~5^SEgws+aZGuC4{7@(e>gK!gyEy{z|sjlp3w(?{oQ);=;%Y+lK~|_GHf^AD$ry z3KH+xSLtC`m^|RTPP}eM-!&kBr^vkJyU4G=YzBW&)7(Sib$%+A2c9{OJpqk^colD-e>}SDi)gJC6x+t zct1Ghu-1#yC#CK6S|wesQD2LnzTX$pc7YU6IdaUW^4v$C-EUlg4HRHcPHb&%xC5s5 z4qXn@+n;a0IepTfl6I2-E7zXeoAGNd1#<*)8x922+$O9F3Y-?(vu%Ba-$D2AT^@yE zzzo>B$G!KWhLzXd7FJNIWDFAYe$M>dLSu-amEdR{r_;#T9M#7%gCaLXQ)nX;3|fC^ zCRH$C8-{}oFy}e)jVqI83m?RhyFe6@2^=~j0hejQpsuZ|uO63C;QZJG zd=rWN1GOLQsdaNJLiQZvBB( z1F@Q6jfeTvV8NU#-zK$JffuxHI^uiTOoG~AT41nR@pIDwYvAaVOKWpKu$h|8FuL?o zA!7QhmmtV!RO6wjFQrNW=?O{1ObAoAJRKvw*=CM6Y-cFWkc4Q8s|+sTN&z#bO`GB*-HR1l@bFiuu)K!^C2*XUIpg ze8{Rjp3A}-AFQMsW_i|vYQ;@{MHYW?sTpw`MMF+$mE@5wA7(8Qth7FH0l1TG@Xk92 zZ~S!4)bqR#=+gySvB-~~QWyG`_EJ>a`TaVjbI_IB_ZPz-|AZLeEzaf(04kps0O0@k zkktS2UH=K_iHg#)8+6DWfYTdjhY3_8;Xh3awe2XB0#WULAbh8ZdL*Vdyj*a8lH2Wm zWKV}vNep`_P{z7`a@(3Pq|eris%~<#YpVcKNZg&jz5TAG@sQ&mSVzK^+1$&4n|m(d z&NP)IW8FJmxdDHWztA{gAz;CB08b%+*Zfc;{AlmiH6&X(;)=LoL~l{>GlsagO~KMd z6~gK%BDT@gziQCa!ch%-0@nEFy4rUR(`Irl3utyd%b7qG22+axR^u5CjmzH8GpXsY zw2;R=OSLRaQJxJI5)=OSn|ALxpqwTEg?1d#=Uh!Bk?QGB^=;S8oQX!fbop* zl~|4D3%_`^8Edn@E(jAxlp_`FI|uQL$t$p3bLtESot6kGIJz?aOff9ypH=Hr2+E=v zeNCxHBBCEvz>MAqGKVM?7*_&*rW1=`k7mHl=RG02lJe{KBsPHg+=m~{?DfFuhQ+{u z<5o}3NQeNWPjvYW>*&j1aiN3hevb&L;@D^s-+Gs*_#0$3nTHx@1$hp?yp8MM^^d_K zl5gH>_5rth&Gc6?yhEl3OG`vBK_efOYwa^K=GirAc*x00a5Vn9s^U+zBmqr6+XH-a=|Umg=jF@s04=0X3T5K<1v-CMtfSQ zA%yVT6m7TF!@u-+e;NzFUYzGH!1KZf;26Ar`+wLQ8UO1t1TDXTfsuoQnZB7N0QD6# z)wBM0`N&L#e<8dTQBhSwQ8%M1J=-+Q$*B*GYgS!j& z6!D!d?Ib^xcg)pTb4^5?$vA#>Gxa*-n&EhOdRq7Egh8U-?1S^AXY-o|SQT|9pDV1Y zGk46`Zz1JSdpzx79qQ!3>+v`x1~!dyI}=q`5;Q^mXk1&(*`QAOHNu8anxNY78wZTB z8JCgwI|E|0ps-6+S#4E_E2`Nmrbo|RGyBifdv<**>xcV%*-(!an$@Z&FI)-Cm$FPRwB#;g=QF`Jd|HUu{Z z2WkR!gc_%a`b{zGeqQ}HDy@DcXfrL7l$Um8Bu2-=E^vVyP+z$zh!0Ik`wv?5_@BFuI+4VjM`L}|RtBhd&_}*a&GJTKaWzmwlYQ75 zi&@w7_cY1M4n2ET2WfeBOtpN}6n)8AB@Hx|j63|B%{Ov))P9cW7S@3ZXjE-RRZXp= zjbqd}B1p6nq8%02$pOn7p;m29)l@oS#AGkvlMJSjCw5?n`9HNxhri6{%bXLwXy!PG zT&sORd%FEbxQ(wd4^%0)^8*1pd1rfzn!zZ(u|}9P^W(#yu2R>WdpObxZS)!z_k-SH^VQgy}=$#tNn^Xy0O`xNZWFk z#v^Wd4>i3@k+dy#t*T@rhpZI*w!;3JcGX|`h^$LqSsSHlb@%I1_G`JL7LRsbCG|#> zL{ZQ_9S72`wV_x&ztH~oz86~2furteV|N=bC%YHt+vf{H%-*FL4(QMSnNybr-8y)v`9`@B~DbQ%C zB|(K#jNfftJ8~2#=7nFeZtiZlPq%-1em*X51GOM!Lt5Hyxh2KRT*Mi-%{z${o=1`vik89$^hA1O1sK@%fX&XMPQib`qawhn^GTpu}I>eA8_{A6zKp4Wm<3+_i2 zt^XA@Ne>5A6rmT!yoo4`?5JG5kZ%UFi2*2m?b9SK)ak?2x_B|#V$$39!l08}fN2~Q z^}Bqf(b$=Bd2^vGC%Izo*^-eddwg8JIeMQJ&`^Uwy45)T{8p;Os8kW3d1B8mGx8rl5m^24NihuyV5ND1F1o9fwpj0gO{0=%7VcTz4B(aQbJYDx^X{&w056gO;6oX*C zfy+M7dhyrY?jA}awd!BHfHgtJT8@vUe~2RRiW&!MY6ie`ffB3)T_P~)2lFWvO?qj* zq@t8mk>{}_I%~?*270Uok|aJF`xZK|L*^zXPY?vl&~vAU&0L8gkW6ib>BFrNtVFu2 ztwykuUEUf~GQx0%Ipa?7_?DSnR#~pqix_^L{XJdMk=>@PK8_>D)W+&ZBTe`@g}$ig zh}6Z-L7}W@)>3tLRDoa*2TS1}Ts2FDcxXA^;apbS4zxH$=CT$l5J5qoi@mk~;ej_)68R*@V(fQNl9j-=$|b4l&N_MC<^A4vgTpqW)C6=G zaqQ-9@)NGL&fz6|FaB*&S4g^HbLFlkEm1bP{$qQxCobx zN%X^Rs7p&`s&5lq3BL}`h!=j#5Om2p4s`d;K~#h~Q~>Vyi(5i_`44URbZ@0)^h`y) z1VJ<~k%?!4x&u3HY`W96@T}Zm_np-k*xd*i+#qte)8>W;#n%EOogDVguF%VP;EEcM zvQ;a_d&yAvBcUmU>(P+dmNBq}-XEr_hT~) zQ@2;o1f!w*dIptjh@`U5zEL%dD_1#8DJ6@@dwL7$wV0p%!Yy_DmB|3wL@n#?tt?tE zqaODevtM1>zx=sRYw*2|PVde4+YO$T&fVY(^m>RL=ldnzQ09G8_(|F=)O5A&TjYMWX}>PfB-g{vsQd~1Eg52kLTf~# z^j>Y-7sii?WLGnw>e4s6hobDR={tIrCyr+_m0fC2JLEkD>3SSbGyP{u#D(_A3aLf* z3QDRiPEb&HR^5@tjKQtDcbUES@%e?Qmn8eH#9`313r`_i=yY4Z<80H@xW6i%{i#y$ z8$}TA0KG8++?Ow0|AU&cqtIKmudZBvHPtAx{>aHh0FnR2`OSauv(B679Ps2|NY6C=7`pUCABdLZ4@A zyPKb8Rvr~SK4rYWU*WW6XwE&u=({{basgqg7)8Huo*h0Nv(_j;TY2{@;P^U>M^Qdv z??K&`Y!!Rhvtx8mq*iHyx}dBS?X1>&sy@O+SD9lliK1uyRJA4p$;>koI}eW~U2Xb? zB_2uzmEL6F7er*5H$<2~6@UH{loIiTox@*@*x#Uus`Lhh0z;YE*}2HdQg_Vg9uZRC zkQZ<|YiXB&bL36C^n+mOkqsfCWZ?S){Ey|dVP zBLq#?5>v>DPdsK!b6Zrmd@Y1qvtU>4(Q{j;!;^31R_&l4kCQEj(-yxZ7><(Ud$9>`U>>T$rFqz23(2GY^@}PwAN&4cbn!(x_ z86-q9U#4NKw4japKAgHKuA@|b4_@;lZ@?9I#j#6pkQq;MOD3HlhdD`XGd0X;Kgy5x z8Z>ztn7`wm9-3wJ$Nb&}M4*+$d;E)X@vM?YpL*GmtDa+^2@-21<*4Skn)p*b^dvI5 zVf8LhwK6jK3G?E?Qit?HTR^Y`M%I3l3~i}~@yV~2D^+T01vDa`#-|oi{*#rq-;O(u z zrnQHHgz{RH?>@=`8jryGGngpx*F5=c)+`(IDX&Y@XSNGFZ}L`T-mMQ1T1?nQs<>CF zAE~2;XDYa?Aln(Nf=xt2Nchcg$#~LAoLo5*vUEdjprp0kK-_=%<|k!VW_~xn4*Ds5 ze|8Q`cO|$7e$02R$bb>};lkv{ihZ)xb27q1wIOoiXg#TI)Wx@vmEA@?y&KeHdqzCd zyYj#gmN{k$o!Qg83*jqC!d3Cf!cu)%UX)kD^ck)JlX}}6>o6sIZkkwppOqu~D&LI( zq^y%@j5Fnl0KH(gzViVtJ2!))E>-ub!;c4bJd-S=i1-s$o zX}|q`<8z-efYP*{Q2-ebsM4x=e_CrHt!dsc9TpB?O{dJG^t}m&V6aenMpZUlI9BrWY>-52e!6Iwx(){|JCxrB zBp$`c{Pxq6w5ENm-ShMMCcJ*^(vf~1fC8!@fRQe)J}FU*n;Efdm4WsE6?!7+NAZi7 zGp_s<*Tx3NJM1&Jv)La~#LXo?bC@4yK;rh9E`044ski%gOM`(fRE{VJeWn+k#su|T zmu)C+*MjVBvvuXCOmfav7gnFwwU@2meo*a#?#3khS%MX%vqRVYClvcFCWMTiYg3TXksBjB6_nM z-=gbzqc&(Mm$Xx=Slk`BU!X|1Z(l#i_A{*pqakPCQ{0a?7)`D^8FjloKY(`7)1YM= zL;HQBq6!ytr7GwkRQ1dYAtO&H5!6fLZB-$iYVv~>&~PL4eure=$lVgbZa+kY91zN$ z&^C}p^~!C;g*L21Ka13BiXeD>fn$Wu;!Yq8I==ke>>iX0yT54|SEfMIVP5k-nrlN& zEr}x5oTTahHNB%*C^WHnPKKC2oBkM!)^_Qsgoa8Jb3-q=IM~Nf@lKq4#H2KYbp)){ z@1((I54HSR3clQffx0o4zR=S(3ygT;SVHJ9ZyA)a2p!lZ8JFv&2NmMLa8=lx4;O$m zkD#h;O>|8@YX>aYNR3pR4EwWBDrW7vVSX3R+;)qNV`r`_0?ArY&^K8#bMjQE8B+1Qo|i;M4%MOVq#(nxF@z?(vk?SS)mi zp^6}z`h%~Duc__!1e%qlGjiDJ8rq38e%eqcq8|zUn0ilzL}}3Kmwl?sHTPTG6k4g*aIjSklmNCHUE@Z>>v7S8mdNn?SyO4Qr# z^ou6806GA8%6e`TNUXD>>o*%5(5kUxUEeyKwKz%?q@V0(7Bqm5YVJvgz*7TTCu;4! zig=)oL5V4erX~6Hlur!#1^jAg*h_VPlgvI=$XQ)gr!0N}1XkmIo=i_`iOp;z$DkAs=!i2?2 zXG)i+5ZhEIA8Mmoj_}qTF`x30;27==rM5n)p%&=C4NqH8#B4;1=62p*{n?gx|cB1}{jI#=f0>RZnx{%z8B5Ug@6p22|Q#9?{lf ze{I%}xD)P=B@5TNnE7*V<5@!D#;<8O&jO!?6#$UJji zfpOh$9{Vfi8O9o}ypWp7J~AT96v5=D1ZVvyas2LtLyx?DHyap)#!$o4Kjm@jN+j5g z6dQx#ZdZ^+<~y~pRPfsJ>P<fcN+HuSA{Lh3GwI*g&|YiOX=?Y(C>n zo=GK(Ey1^k<&sXAS38cOGF481cJ-iR)Qs*08FkQ#1GN65><;^U>K$TC#uI4WOseK~ zu*R8;V;*Or1_G_1F_m9~TQ6owc8_HjL;9=40EJ?uAA#l1vVoDEGs`+jb;^RwYBKLG zG$ZNodU*{h0}7|GWm`|s)elGVXPQAw%2CYZ_(!s(*&G^ao|ITC&r4mhlY5wE9)dws z=@m%@IJ@Edlh+H3gb(2V@UuS;S^fJF(;p6W3;+lc{Ga>TKd?U~X^RbjF667KlubIZ zs~~NlaXb?hGAafnap7?-({GAd36VIYxw+4+T1%S?A!{DTx#4tHMp;=6YDTrbp(QvO z<@PU7b|AR2GCaMBD9sdV@Jk@YVI*qDnkNr3ZY7zOSXaKq?g=2S!4d|!5Ez7`{3{3` z_U>>^5#i;R%pQt<5yctmD(WivErVe_Z4}!st@cK2BRNy)IgVE)3q*c(M@-`?<7y{x zWtC7rU=qR_K#Y{+N)~M_?P6Q4AuB<^Be(jOQ5!RTeunX)-;`vw_4D0yw(KflpDsQ5 zh|HXV$g7n@z-;96-o$#q92Kh;t*IG1MgBmi)jn*^M_XCs&^#niUcQyeYJFGw$nW}e z2I-phi2FLFAc0k*_!F#{DV4uC%xx$}rNZcK{Sk=;_&Ku-sQTWJPGv6Zpbvz$dKLVZ47Q2 z-tStcAC@T=M${Dr4yfTvE7|2~ZRMU!_L|#c@mcAI;bciP}$1II>W8Rt^Y*Y07*o<}1T{`IWy8dYS2>0AG z%HlF-Bb_mpy6IMh_dO54i=wI0@c_Bmg_g=^){=U>3+wB-VJ8UEX87S!&L~Tgv=r1g`9f zby;;#$y#ol2IBkylc8B=Mvat<&yz%6;~+ z7+f4+dOg7UgC4;6|3d4{l%baa=7+`-v=^n}&*S&-0ZOY-keek|D2V5a-2olfBM2VE zeEzL)V1~@)BZ~i@ z;DkyiskgGY`f(7epqKv<+cU6 zQE><|=K#&A2~Nd%J}R%7=6lGonxE7l+J;401HIlx)k)oX#ZS9@%Hg$xGSTzUCWa0h zEk2A7qLRT#gQmW2YrneRe_TQmW$v3bT;G(Fi{ZQI(ArEs4%Ch_u7m~Q>jW1r^JCJF z)XDeWUuONr)A!}772WiE3A*xc5DZG#@vVTWm}2K_VQ&tQroy9gH8~n?GPz6%IFeeR z2Mm3+R3SvkbGg7pajJfM;Yx%MP`B_c7{|{~r{ZhLiqlVp9XX13He=|H zsew*w@7{^W5xnattX9J@yFs+!pT0-WW~cTvEym)DKD&p8a`-j;eAx&o5Wc}ET9_sd zt4$N=zxn4Ax^#OR)qh;)=|dA&>Ww$~g-&rfQ8aMp>rtv8DnczVMRH z&Z18t&aK6dx0V-3|x=lJdg7n)&aVU?0)_Dn6Dx~Ofl^7vkcf79!R22xIjb&AfKvHe1Oqw~!0BR{kyiXuhuM9Cu$rhSBAlfEE!hNsiaC(6{bYG8I2f?%ynvds8Yc@8E zN9rZSBW2AtD^&BluL*mrAm})bJUZ5ltpL6z)Gr0N5S>nP-{qC9h+DhUnr}@i99WRk zVRlJ8K^y^!5{G8Kg%k4K%q-U9ItCFbYKdvIqQ1+wK|p8emM79bw{Dz<7ex5$R1nW#RU{%b+Wxp187t1UnV`9*^dq z&mSy_CPX)In*=5++)3JoPcu}?*Iy(jY}l+75f+ZoM25l~mBw_>yw`T;)SD&OB?^b( zzhh(YNEievtVx)*;8*YWmfnWTOmV~@JS0=pg6`~@SAXey2Ti8YT8%u19de-(QbR2DT8aSh#L)XrpJT_VX|^2yoHB>6!1`1uBa?TH{Q% zZrrXwHH~tP^uFwgN)LEPqi~DF!%w9&S==n}teNXQVgdeB)j>Neb)Zb@4u;84!}`Z% zBjWz?+u1HX#x0RtUIK@FUP2#*2Y*}Ek&n&OJF3%D6zO*SF?j{lq!M!um>nNgdf!s6 zIFnO&)`U|9bzb8OYMt=Kg_$+^p4&(0LsJ84Z8tSbAh6(pnVd&F+X@=x-UxD3X=kH( zcSy3qV*H6!x!E%?1o4Nt!K7@b;t6hA9|Q(^1+V%*YF#S9)Gyh0I$q(CCGmsn34LzX z=*6Spdsl=H0fE4n!#;uI^Hl zjj~L_!l{(PB;{~&C3@U7ofG|Hh_gZh8tjzPHQ8O)?w4+_dx6(5n8J1ZOS_O~4h2P0 zB4rwU;}bk?txQ_Tu7Sr`nAhn0!Tl8JA;zN~N;fZ_FYf6g^Vp|UclCTUW`l;%H?Q33 zM_a^4^x5kBLlVNYJkoCZJk9%k7Q!|`+AD@Q_XhXuwCbc7RMKRDSU(HwM$(j24yw|{ zztXV&#QZk6j{6`$Ra^k5iuM27F<(y4UeC%1Fd{YkX#{{w{=I7XYwZ8G+ewYe|3W1( zCf6?2Bv-ou^J|o_sZ+WwEr4Lr$2ceUy~z<_v#|4*n9RX6$u9BG+1>|H zP<+8mzVTCel+Rw(3)$<1{n1SkKF#_etXRW$+ZkxOI&J`^S4`%+G+mH}RdV-!)3|cK zS5u>8L}3((qrz>P`+)FGB9GQ`*t`&9#=mvyIu$wXI-LB9?nuwGL$k`8^LKVLx1`N9kvmGg4pwf1}()9VR+B& zYY3g6q91Z%h^_-i@8=jB$DC>F0n%@Nbm2<{LuXPBU2h^FrDc#}8j|yUb10abU!8<; zHQDn5CAnFH7^=Pnryu$Vjp{hWC=s9eX;Ci)6aLz6=^Hdu>ipJ*mvoak;11JJiB&Ut z#3NI5ymwwhp_q1st5fdRto}{uE6J|IFqlsIh~)xA+4V_k3PDjuPb`tfQ;eY{Bf;C8 z%Jq9wzI4Z5{s?XAwNBNSochv1vs_A1=ZyvCTnN2Us>NqYiHKe+P_unphn$dU-)n>f zrl~#UL`{k5_}93^#{=k2A`X9L+tELQ&S#$(=kT=)qt)#o(#*RBt1vCRm!+RVubT2>$MH?*{8~8X@=9 z$Gw3>{Cob)o*}&e&l}i(t{#)c2aW{+SCz_8zI^%d|MV67+r=d}B`g>0&$kxTAQ<8T zX$*sOa^fDE7-@YA@`8l`rZ6BY;35Hob-m|WDTax?2|mcB{H^8()5Rgqhb~0w7-Z=) z<;E?O&)+{~D`h>mUNo|^w8B?lDt)$S;IwMb zVobcBlYvtWl4htPga>L2jx;0GLwBaI+aJ*j3(rx?xqfS?Dk;(0iPJy3l&J4nJT9d0 zlkjC$C$~N6Ypu~U0a*lMBilHqy(7zk8SCKs0TtucG^c-=?F4uOkk<5gRA=i zqVD+A0qk5{=iro>Vn>&b^7`-zly>R7GsKp5w^l)w`#w-Q4rjTX26ktCNaB)ceeSb`GW;-@7PU%@{1y<*#WMAr2~5^ho?sdx z24`FYbq&>Yc0}@;W_D*DaOg%CKA9ry#H$C%+sj(2RE7#mHR~2ea#9p45D4F-L$?_N z+2Z)F27ZCWXJ}5)d#+ygg|`&ZhX{ePh!;bJHfx;4MWE%X(Fvbu^*d+aMkHwxciu^_LdNOBud zDQjlA{FBi#ton+_Y4_dg(NcK6Pb<1ESL9BPw8mlN<)#S!naUN z2>?cu`vC^(T*1Bmt>C!yq(0yBQ@2fH23{v;7Zth|y>)Ki5f&lm#Ci~4_));Os#qlm zVM9inys(^JN;O3lI-(>(ilJ6eEhrdRupo$&Zm7aJ@_%vmPGOctS+;0~Z9BuZZQHhO z+qUh94BNIcj11ehaUxGwpX#pr-M**p+kW|<_F7}EIp+Yq`Q$m{MzK(&0hbt_VjlC> zkMt^TR(gY0hFP@pqvZYg00+!(8HvnAHba&C!7T(#Gezr%y6Ewo{anmu{*kn__nf$F zW}$-;>xI#(J-Eh`lFX?gku*(lwNAKr44I*W!fMvI^~*451k}5tU$BkCHU*mwf@zp( zs-q0$R3R6`@d-U1cHM7qEv2MqgibX*oI+MT87YnWT#!SwC5JruPGH(aJ2V{Ocot{c(^(mTT{DraXe*!-$f@COloe-u@sxFRM+aLwu;0$lrt+uu~^lY=p~ZA zSj{<5wVUS>Wt284#>>)F2y`V{7-xAyHKx;w8+Elq6^)U>0+GAXZiykbj(Cr<18~ zuT(_n)!bMpYFbfuy!fTp!`P1N= z?YMsk&w1kb6yW8sraL~;T(?v%{d8#q~FYG?9*^c77XhPuC`+-W27 zkbdZc^US1elq`E>;>8fR#!9o-atbxBr#h|t62=RDQuFYpIXP_;A+FQ0`05E{Yb*Jw ztIz<#en|aQet>SccEERQ0-$m;)5A?A85OgOo21~gVIj%oHyEE?EVJH<(-s+bet@0zprx`JLY%%gI;cv0yvzNfE!TYP)rW zpBVjZ(d>55$Ff}S`DAEv*StG|dLVDvE%mQ2*i^^+F}E0t@5M2y5m3@!U+KTxFDCN5 z{Fur$FvD;A6y1K+B%3=PkaMkTcwp+%_6;1L#I}HhzeP7Au}kqsGau41?`GaZ#wN99 z<-E`o+wwQXHY|vuE$98}PA+_vi8*yEL1eA(|5+ZUCRi0_5UCalDniZoiS+rkpeuaM z*nReqqcC)=Joma?6VgLl{>y+wCBIqVjrPAkVD{|?H4DF=@Yo3dUt0fv-BSIZCCY!! z6uVT-U6F;6yMzTum?jf`6U;CbCKPaXy!jrkm z=oFVhuLQ0|r`)1m1_3<~iTy%trBv?>%i}0`@or)lS!7$>%&{8m!gPtJ^V>L|Od8 z+lEkD087JSRx0@B*E)ioB#MY!1cSmrD1#}NtZ6n zTFZ5}`%I0uV`nPy)R1W|Cm-?5%_53bBmN>67qed$lflW{x^CG(5 z1x9ed?}kj4WKNvrwN*N6iXc7a^@ug(@ry(^sq!)OOXM));y)92NeJb+HZd;H(B`dB z=9jDOt=!m8F=$1*B!NwD&tu!t8f)el)f2_)QNM~ydh5yi(P8b8?A&|ODb*AZX5tma zP;UVP9-#mib8u#6cF0x$=w8AxcI8+aYzOON%b`Q4OMmT{VCRe1Yi)g~qD+*>6bGIn zv5oMsDW1HNW}Uf$Z0X`W{VLJl(XkP-6%vu}%&n`4%(Ph#)0E)MQ8}Glbc{ ze5iFeMG%>B@-(s$#^1Q^{DGPUwNj~Y{O(CV>wK5;{oCBK;mM3bcrhqyq`G2WMM z+1j%)U7|eeP@4C|r8RSdrLC6%>~>$G@>CUiHbxCQNpY@H1!AbVNs-e)kSO~Ku@JW@ zi_M1ov5BmPV1boS72uW`Gehei&6s5ZGhgb|8Tq6H(oH+_IK8S3jpsl(`Gb=Uy=dPM z25$!mCGZ&86#9EPIiwaaonF3kJ3LV9vWihgBS&%e1~a0>+#$=|s@Xo-c}`tE7{aKb zlrL4XWQ&%~#F?IO{0Xspq}#4GqN6fK=?k*O1E*H`WaF45(VZ^c>w+?wu160rmo{>%cjDOY}U`f^!E5C_|aCh zX}WZ{1+VaBa z-GoB1?7?y1P}TAglZWL3+%?28Ml(sKoW2;Lc?>5h;ss0ui)ipBksyr^GteN!B4Ded za-0QA(qh<3e$pjF($m_=Kfz}&NLH*Yg^?;8>{#%h+(cOzBbWa4PR^uAym}*K9>=|# zIoE|fH%`-RHn`{`0H^B;oNN)CfZ`#At2@Vc+hkVEj%l&-Zui&6E1M96(xzk1>}@r~ zcn`QgFEyZFuM~3jmIDmgE8HZA0jL3*uF>Vg>UBpxgG*9W19Iox8(s@y|hIo%I29=> zmbB$il5nf7g{GzsF6_f?YWQA$n0tyA`J&VRG)EC_iI!JlF`N6(+V^*{Tayt64Gi() z$JKXc6vzMH=AGv6KKDXH(-x}*(T6qetGAu6!C^7kUI%t&ncaRvk&o{jxNa+gOODcF z$V2!vPOC#=`)d;;p+oX=vOci{KnAs~Qpkagb;^rz;r!SSJKnKvgFL4OM!X*4<q> zIJ7&<+YD1FvlPJOmA(`cRwh%Sa;}ZmDg_$7=saN!Or4^LD##QJnxRNjuxZ$56UyZ9 z!vYug`&aIbldi2!4Mk(7**ee;!fAiI%5zhPURjS2Er$uU}%dcN$ zlxL;ez4ZyBIgF`hHMuqi09&Z2N>$7v9fg=lCh!f9G&7OV0H!i4NFz_yn@CL0HFb5GT839N zB2P!1hG|PY9Tp!5_Pc5bu$a70Le{G&crnwq5oQF+2&euULVg(5+1-Q8mVR>!0u3$G%72nH!q=HZjQJxKk zSING?V5;O5Gpae%3#V3uZn}~pTm;@-zL2frWZ^MYa=Br_n8;1>JvG_d5qRLV=`P?b%zPVjY!Xz$uRe%nskWVTa3B-I^YA} z)?f?++X6b{`m^bc-*+WjZe6F-w}1t-d2~r`K`BKCd2&fNZ&V%eEoi+JIsqM!Cc@Mu zCJQFMg$>|1ySqv{o2VyC5N|}zwVJHYlr+~dS(w$ z%q;f5%5f=l<*Le<#f4S|bJXznyj}(~UpbmY>DxowmjWD_DHWPar0Wp5A>%@BQnl zgx({PUIMLsoylpqvDiyy5GOYXQ{2W!LUu2kK>Xo9Zo|x8$x_!BkaSvo0Vtu0+ms1? z<(v^)f*eb%bsQ;PyKp{|sy=`!gmwtMq9yLpCG`8tc%yYBzKB_YTZ<@j7q}Gh=|K`X}Mf{j%ROCzSbt zBp^bGR-Wnw)&^KBC>qGq`)9jQHY^P}4?*Mjv?s+S11`rdtuzpO(`EaXy`p61 z;3+v;NPN{-D zWb(%u3T?aM?&q>yYsTBs%>uELSY$+eF>(}@OZEU>E)?e}>JKFk*U$rYFfCLE zJl&QHjziFHUWjg~SFL7zY8TnB#VdGX>dPv&%;^E{<2-D^u{9Oq4&*iCR^IwZ2Wr~Z zlOOIA{>+PdS>2kEE+9DeTyBYXLe+0J(zx1pn)=8GtIghG-bccSlW8LvOda@Y0Cbtz z43K$_w~T!_X~npbKv)>=#_+7fiT2(L7;+J^^20y!xrvt(SG?cY;273qkMHO>XKMPu zAoFJAL&kGYF)VKy0o6TEydx`iEN&o{&9IuA1poZmLqGANE;g}VU(s@_bngxU-#-K3 z5|ysl+Q45b`f-cwBCYkY5DZu3$_A%QzBJSiLw4Jewqp#Wll06v@$pjyZ`nd`6@I(o z;PI!2`d!)6h}D}Gy%+iU67I$wN3pB1^Q1T8Kt$?~M~isc?A+FKuFfJTuMA8~Y=qQ0 zBlNB;Y0s{pu}^n60*MYd*S){|MsZWr8`s8SuHzp`@^kH~V^)9Ax#b;Slla9(18 z2R8lIAE|~jt1T|eX;ga{LTLAWri(kfVa>vs!CF#_3s|2PRV=r6Ferm@8uqByyoQ=r zGVBHqm+g3N&kPsQ7gB;XK;*dmD3duij@Nwn>@I~W^R(sLnb!U1+v@LnFtZHl{rr19 zc=JsQ`S*y^3dZ_I|2a~~{zqI&2{knpRFXg&d2OD6CM1*_KUslXpXQJdG(@*`YCbeg zhfxPJrf(cAj~M}RybzxByZkU?hcHx9P#OuN>GZ|hRJ!Bq*;C8a50mRC{Z)I(*KWgZ zgq%XCwY_R}t1TbOS@yoAq!R#6%HAaTtj z7GiGnf}EX{){!`}ESNERri;-ZA)g$EFwA~LxoK^Z7MBeBkg2=vRvDdIsKWXXSKd6} zC0w(@`cSsv`V`JNc!A^Ag=RNDK?dB)0eTYOQEL`|ioV7_5|5vuOx#lX zN|$Ld&^eXP9buIkApb!&@XpRZ%XNOp9)mMFL?1@?pgp#MChxxWD1(l6X3^G z53%w#eh03tM2lwllMD9BfvZ^RX6060D@lo>|3b)JHN!G94|@Q!=E5bdQkl#>u(uj> zc5eBZMPoMED!xGv3)?CUlU{j*O~f_yf($C(6U~Weaw%mLXfZ81H8Bbj5>t7&oKYK| zY3(p(7N5W37!cMFt3+6A0P$oT00uoKQuJ}7BcDe&-OJ{Vg4szdEkbl<<=FN+##}8k zgmOQvI{{3d5ryiYXOO*A5lKmd3L40gj5bpF!laU!EUNh#$5VJn6Vvc2FR- z1`9NrOlREsshu^ojjWQtAyRGO-%qnWa&REq3iB9F><6PmkeVHo=5Zo839*V^9tLyV z+{X;SL&!;m!+-P#nco61f0+n8bLZ&s3TVBSICu2d#89R1TM!C=ShBeT<$#VQ7sosV zCzAQzC?r@9S9}lm@?>)6C2{H9tt+_&Dt)c?wkLC6K zZE=wrm20+WGla6epFPh-*KxQ$^lT)9dQlZ@-qT6GM1$fjkBE?9ch5qU+CFOG=?8c% zbRU9;H-c-n;}C#2UVKrc4w{zbt%j-U3aieZU!ev-$j=DcCMwYI4 z|2teN97dKJe*e`--)2?+9$bD~`u!h;d9sqaA`(CRX9%UfHjxMdLM*~8Ha37Qcn-J@ z0302ptt5IvpKBTny6 z9Y*L@9iFEB!%eY+lA^+(BQ=-uqN42E!2oIpiFO$aEl5uv2{H~?e|jO*suq>;<}9z% zlXU`rfnTK7AeFj==ov`|2f+qmCXX3K7?@~{0D_`J`YV>(33SqgbMdFBg1(&@2D%+W zDfv7(qZxF1m}Y#D;UqyB@}Vk7`b?H5;DUh^qXYxRzrRxa2`Xq$2UjhEio5P`E(q69 z-6y&;C&CTv&$VT!ESuq1zfHm9b-Ejgu$BGK^w3{Rp8??`aHeM-S!M8uctLVys=wr3RWQ~A?Byt|nO2i~c z77$!5(}XIHC(3;4h_BvpR0R1KO+|p=JB}!?Q~}af*#pj#0}$!Mv(SS#8)TGhMaWjb5y-AE)A4#wf-5y$z)f<^=Hhn zV%@T%+&Q*{U}++n?vjzov!7z_gbvOyt1nMIC(lCDU4J(}W|s(;9-CSNs$ZvzHj)#@ zWLJEK1w%qguGAD36CAVb5;L#sE^iB_#|k=MYi1An#20H@14zINrtq?J#x^Ol;k@!d zJbSoN=eUGn4k59)n0+Uic{oY)*1@SBsNV%98SgfCvX)3M&T8 zMvXVyY;YA-X3}c+UdZ+qssM|vl=YQ>8>{sh1COKyK6gbRfsT8&8wMJ*mU7n8AA9x| z=9{lXC)E#X^I*Mu8LORA2&Ntr5AV$f_2Q=0rvPhdkbN5=7n?N%;hUT919@r>60MYo zFSSdqY=UY?#C>Pk_*g1p>2~>tEK1hRzsw;zLCFQ4K*~8hFI!Fa?HwD3=ZlKtCVsPV zy2#k=V2f|h_Mg}G?*yp~qT=MwH%gm-OHlqjl>W!H{fp97ihUM;#Q?PXcp+VbnN$+T z#c^?h;+o)2HLwE{k+_NrsTN9$(?BCnK)!rR& zO5dU?_1=!VyQkXQL;vN#n;4*EoHuySQ)_92)$NKrthm})OW>|WBWH62j+WscT7+~V zBmrARv5S+`Uig7D1&GNF>J^iL)$m@wloG3u*~jcx%VWmM{jefK#yTbnS7xI!mcT+h z>l9QvECv@%1v+GsnklI<=u}3)&EGid#rm&sLDa4Ds!W1l!eP9quY`Z7g+jjE5{n?l zyE%zPoiohR!UmaW!j}x_WGJ%YIin9Z0=byo`%tx*-G#=OHVm?vYE9q{r#c6F5ogqY- zC<@veQmd?*Jjn9GG=KOH=(D=B^<63KY;lY%Y$LU$9a-7s@Vjcg@%7lj5G01WbA`_1 za|OTH`x1NOY6*k@iOC zJfH7$Fq~_5HVlJRflQ5-WXU@?EoUoBAOx6FdwjyVQ98|i^qBqfd3T2D2e59^y6Yi% zm|{NZTIoFDMAc@*qo#!~R@TWI zdBNd~x`q5k` zWEa2!Q7|h;Q=xraq0`|FW#HqzAp}yIJ>@FZ16DO(0g+ma;U4GQ30f4RfEhBR*?D4Y z5yb*s(6fQBKNgC70a(z3_Cq#-E##3+K#Vcy?zIbu6fta@C@?<-WH#f=HP<&I+(9Jh zE3X_~p6r=vFG)?31kz&I*1>gM4 zZA#fuc|;$5@@n>ilk#pH$sxSD1tMt>L`!O$%K@7KVPGeLgk=C8k)66$o^fDCzgpf^ z%kiVJZk{bMFQ!9eMdwj*jipd*E=hC8W4ej@DEt7za&{;7K9Hk_iYT|Dn%beJJK+WE z@pK5!%u9z#TvC}k0_o0XasCuAhI7tEE7!(7rNTH>io~>NUq=q(vM?7|q?fN}SV_W{ z@ZJ<={GYkxGv+|aJuX9sWeugVZ4E<5zXu>qV7A81YQ7bmTf0=3 z%X~kK)hj?%_~-#mefH3uliRnW*2z1vgv&#N)qRXP>YsH^6t-+5U~k|L!eg_=i~I+ZPa-AKtr3 zcaJKtvLbJ{rMexj|K}`vy_i855fLS}T-drvsEfIkN5Tp2-X!n-5EKb+l&No0or#N3 zkeLyjwzBre=2`h^`W0`t7sxd{V^BI7?(>`cv&!md>S}}<*tl$^k`L7;8G;6exvwx} zlOg6EY}j>v3tA_X7s|1J&*qk)Sj&@ZGMz$O#Es|NvTBx9rPxr~knc>4R(E+cj1yTs zLA#{3z=azCtVGZVA<9mk06G>6TjnVuM`>C(Q0n%nP??pinpv|*rpTWGbgusMlV#W` zL<&I&Sk&SamvA|&W)|)&!LA5~DI^IORm^}dU&614O|G+grn7KjF7udMjVkN@_Y-$m z8b{i>${Vc)on~&WzD0@>`)E3vSObVyk+LYd6|NWjQZ((sVhYGsX|m2-!Ufp^x2%cT z7_sRBI=M`Ks=#hUT1COMV{z)Ggpcm9yQmI)FpgUB-}cUg61$CI(63sd6buS*I^Z2x z_OzSjO9VP9{`CENF=u3f+t*hb`$Jb_9iG@P=i%OM9~fvn_Hw=6&6{-L;!<_Cx8+9Z z)XnRvGCF#?V)ofUT3>ErIhZ7l4wxIg(jlKI?%JNi3@r}nrBSjNHXU~`^I)xxTI1YF z4zs-*yhY7&0+a)2vs3RFPRprsLu|NqO4A2@q_8A%6|KDg#q;a$i8@DAapC_yO;OO_ z@|J&VN90KKA0%c&_{``${#HL?&sVAuSENNLur(5FIllXkvJa zQw~0j)aG>~O&6BR&HUwmm>>fgRAPQWZJYY01);Y3ep?8OFannosPwEzOy=E7;bV>M6D6D_jU{ zmt!oHn64B74b#@;S{5p+F(1w?+yncGqv!@Z!`SIZ<5s{zgTM#eSP=%=NC}msHbiS1 zKx{Z!N7L1IIEKW+7=B;amIt8=4rWf%4SVB5D+X^S(WV`5++ zng|!@BA#Ry2Bu0q;FS}4=1im%+d#DhF+z{z$boN)yGaiNPR+F`TW9`(snSq*C=q$! z-JJZn1Be5Y>08xSN>;N?Kr?jB5yp}A+f&aLyf(`Wkx0i`YV{+XrpkRw7RnPUb?Cmu zoc&`DaWnryP4%MSG5PzaN^QWCfg74?*o@uAJoWjMVa>L;7K%McNbpB$ToA#IW`>6H zH9+;a+E6GFUzG|*4D2z3z%piaWbwKl+rr`p`V=U+K?uC;%qi$WH0DG~4}W+!%_^x3 zcBs6db=Y;S+tZ=dWL>L#X_j}$^pHYN-gp%Rg0Srz9jtHlc38Fi$uF6Cf`IFKb!S?z zhJsV##a#>aKh=?7D1t4HZ#I^C0U8l1RxINg2cDPjuA*?u_=DWnj=d$=Nw<2F`x0C3 zaO>EzFn*Y7ECWECk2*SxnJIbj9VPoPf(R`|!QP!B2DbPjHH@+g7CA7_5Fn z6k-kH6mH9P7J;Ols21GQ3(GNOI5IcL7NGm!vDzzw%vZ#@H*3k#FvcDGqaEhA!9{1y z6Bjw6&H+7Y(B?Dj)Pn(;H@fbt2FuBr7uK0*Kcf10Q>{zgU~M2P)aD4oK+}r$K86op zR+J^QuU=Cc{s!Jf0doIj?&k|-LuxTo{v>`#=5rdCJw=FSl5TukR?RV;%wCKpY}Ie~ z9NG8Z?j1`+SE%?K1BlJu2OPp)ufAleft0jQvuxcv@x4KA!)Er{CZ3ME~!>(|?q^VwDL6EKy``m;@0- zz&pBS`12nrNcaG|7k=OndWrB*cD*5bh@^o`+kFG0%$UWHH4S63M)4G>En~yW`QvzT z+Dj`(jJsJm7<_Pc>X69u+%0dLo>SZ{p3iq%yqiDJ{mJ7-)jh`owGP8=juP66a@e(x7lW2|%n;?H!}eEuSVSzMQ_zC3r-=I`PQ>@XCgfz*;l6V+y5 z48~bpn(RvIbwYV5kTls;nT&Et_*QCBG(kYCAlWJLw@RcUfFSsXM`|;$4>*pI&U>XOu>*YXp;L-+B|IQ`zza1C;4aM{1M&~Y@~D?| zlh)}=2wG#{h-Y#AC5THeg4sks|2>)01zTMww0n)1;!glkiBUYfxCo+RL00&S<2^ zKtI$IwyJ^ZAAV?*7MUs_N;|TnWz?f=aAZpQVEW%^Q1H*XXg^Is0o(z~QBzXPINN7_r%$J^6Q%&4I>`Wb~DIVctxtyI}C?)f>D?6^uGG zv$DH#IIsR{Vu2VbI{g!@DyiZ)MZtiB)xGjR=HAs z$2`+uoYJb2SjwXB%%N19`OMM_7zESV-BT6o92Uc2d12^&-@V`+0k;`K5^a6J`Z&$@;>O0Zhso7j z9b=3^Hemy$_mjQBaJ;y!3beeeCZAewQm;0j%Ge4=5~4kMxM@MN_i+|{en+klu4M4I z2eu@jnMF0^0@DmVbBy@a0UlqOXvy9;yRT#zwnTIX+hFs~!Wi)T3+)b!y`=MfB0RZ| zHL?3u+_$4=)4ia{`=BACXe+pqhlp4o;WR9E!ivo1J&1mdBFW0(L7BTND6)Hs)^8aYO z|2MT~Lsi;#j|IN#OjYWM2n?X%xR|d~{ExK!&t4mapXRi}aE(F}>!U?{3NG3GU*4g} z)bR=L@u7^07%ZnJ|AG$_Q*_pMF=j#s8&uzx)(Y!s53?bQ%4dVZd*Gd0xk&I9qJI9cPiZ1xzNGPE6&)=?%o! zun*kjzprE*6bTQMX@sK=<&Fsl2#vj^9sSYRAq~H+GAKM&o#)9&ZAo4qZGNOEWq(@YSioM+Piv&1z@yO zXi=10;682HxLMpK$@I5ggzXVAO`9604>vp&WVfEn8HT{Kvkg{%>?<0{;w5794R3P& zzN{L5*CnU>Qn~ePz!gbym%#Z_K}z1Wv{=q*pFbM$^L*E4LEFajeZ|h5F!iczNomTo z;p%?~Gvy=*d&b_>Hj3v+imB-}PMc!0$y{P99kFo5-jhq7s*h4O(dGE`9@5CL4Lm*1 z(e}>c1A;o%F`-+FXj5fq@E**A%}srDspamk)39t0^NCoK^Iat zG>f5XGOzi#**|ralUu^&sp^rpzI=KA25)1%d(tHt_-BvFB$sv#KCbzq6{4TVY>|iI z!;DiQcH}}hB?f8?vRVCP#A6C*lO0-HwD}Sc!v)=^4GnPiJy}?5d57lG@MG`+VsdqMkp3L~ znv{MLjKqmRyVeCLpmWSuR1R$dT>O#hD1M>uUb9ZS zUb6dNJcSAR%BCK^XU4YQ)4=~Zm*l?ylBluGw?@`bTHo=X%N~UZn|V2S?!;6&@x=A^Nhddiso%I%2Iz3M(>m|bvCBR4HRz&L0 z?)&mQMl#XHC|kAYTGZ= z7R0Xglj>{Iol1Z{#Y(;_o={tFn;?JKgf)u{H7A5cfE8DgcXww^#njiM)P2E3PB@$H zY2*iJMi62J4?+#oiV&9Zr1o}jWD!z6y>xmU?@R+?hN7zo-Fm~rt+X{L;ijE2JX`-7 zQa+-f?B!|i6zF&==ZzcL05Ul@%7b`$5z!$Np?I6a=&2zIqv#f+cMt`{LcO!rSJOoKSyEwzaFK(3y9!v)2qMP zMp&c1+aAZ~*yrErMgf4-kWOT^dIP9>p$1^WCfLjj#A3G*)yuxQ-C1tZe-L@(Zuj=~ zkTTr?99vahXTxlc^7c`@)Tns+C2qRxAX^Dc2Tkn8mw#wq1%X&AnX19@T&PF(`q1OA zh!8+86acgc+L?JkSzy6ctTB6`VviYIsAmW;cAMe^FlcX-sxEM5_Idq?aMS^M1I5B~1+!?!A zFtrpyC24j;Nx2Vce-xMp@c8Eufu+x|Jaw#FU9dw?Psb0;qM*CGJw78G!kEo~MAM3Z zI=b-XOnX+k6V22ED3tUT$b@PFhIQR^o8$N_>WYq`>4Tn1etnYcU*U&YWZ?0*KgOfP zil^DWen>=q<@Ks^>)C@2sUh@HGLAMWF;}3vwLCC3 zKg1t1BJT0qA@hX61QhOR>t9GZ>aWFO{@-V(4D#QAqW?D4`i~|uS$XZdiG=4Sgm14s zB(MR+sC8TfX+Yl_1i&D$6SD(GkK9fpT8?BAgPN#r=x`WU7XQSragWV)vnvOb8B!+a zC02gq&U}T~d5hxwq`LUDWWrjJaUr4t zt9;TGTF1_LLMc^hWbrqk?n0Y9^f#CO!eW|fapreIdwZ8;ExZQ0fpf3Dzdrb77|eiP z_2Hgl1tRMJ{F1lm?kKauynDyKTW=FVi@4LJRymp_kI-z&tn@~>vohWqR|Bl$t7+M~8J$j397t~ssx z*UOuBp=bkaB*-~*qzdu&AJa^Q0@)iSoH~SZg4PtR!Eiyha2PZvGD}RHoTzc!?A zz85jAWG)T;jOizWlIv9%$W(edW<3)#TSZRXl*K`=k)Dy8K!`PGy|3$(VFlWaZwaF( zz|K`=7k9(e4>jn5VL_Gfe0`89!9mIta9_;@7*pibLN9QMiMh);92&F$khf}RvV&-l zOV@n0JjiRI(7zK>tMP4YnKZyaVRNN}k$fC@60S^{z9wF>I^I&cJ9}?3jD01PzsAH(#t50x@}>R0q|eEX3{D1Qe)xB~<+(*sS>zInNzq{%bmT#Ls9D zNS0###HkbA5mz0;pxT&(yRM$uT#x9%IstE=Fwfnhc$a&0>(KK?>eK2G^Z=0~b}Clo z@Z%V}uk+89;`ki6tuImmsK+*?SCD`zu#=vdc#eM11BX2{U`^OLTX;3peM5%cR9>jU z8QHgZLav0jB@IWnKL*tqkL=^2W=;AQFEyiw+L8E(Kx+5mvi2A(+3l?{keAz>{d0*2 z6BBO_IM+N^_9d1~Ix=IUvN=Y(O|?2rVDGj1P6|2AAFCcOZ#k8`d2qZ5&Z@5Tg+G0L`=e`3-BC-*#00*Jbg)!`k1nn5`=9_-%gu-T7HLBxu1UH;3X9b*OBdNUaW^ zu)PAow;}8E`$76iaEE_+qT&(phbwXK48hlSxV=5<15DSD*nvEqURS;}*V9d!{>`!P z=>sUG#QJ96Cv@AA=`Q`9REub3zS;ksOu?L|WY@6P2?;H9g zP!KIr-c{a9ygFKVnqRF#2=G)YuT2hFAFA@!;2RGjD247ybU3)_!I&MMu^8W2j{o4a zx0E`QIn@>H?{FfcHk-R9lmbfxL7MQwjv9D2c`SGV`+HBD`WeY|AXu0YS*prai|*Kp&Y_BkoWNo;)aW{yhxcRuCdi z6gaaR2g)G2cYeF0xp^SdJzsOsFs!MkQWjB=3+DV|N0E64Qu3f!#35^@@f5pTwEd1H zUYzTT;;By8_It!` zWxdg32aRqkvJ}lO7SNeTLIC0;cr;F?c2}Ggl|gni0lsbM5-1WxYotZjOP1DQWVnEWfSAR0fdV zP7`YL6Xaks_7G$}pBAmA(NJh&e;8?|e%2tK}p z3v>0uri|An*)sVc(=uIyl+Oyki1gDO z4+q`axh_R1YAqiCAJY~wmPiubFENVn9-rfwm0H^`N?`^!=kHQ&y~;j!k|2bU(`XuG<(PW3tP(KIlJz&m3J7iHWv>P3t{n zr`Vsej(CpN8+@k z^CSfcjCV@Bk%M?$JZCB2NQmu^hv46l3WF-Z6d)s108W4`f@J{c<0(rECDj;Gxf3UZ zM$UH2;0n1eetg&6Ldu&tx%$pNDN+8O06*4U`sb1!G(P#v*hfV& z&?JSJGV-5dPhL>BpAcetb;M-S;hD$@w}0#j1)6Obo@0zJ8xUW(VsUL_L}R@}!)a1e zMlvi~N&H#XD(9L?Fj1mOd%nKtB*e&zh>N25)C3B4Rv7&+Np$_=te3)gm=B+*?l_$% zW(4F~qm8C4jppW>vt9D<_$a#M(W+K~Y*_2Kp6Ezkd^ERLL1ged3E_?RjU6?QsB6b% zz-UEoXf8$R{J{V}COs`T@!>r?bacLLtB$-MN>S%!3*F!p5x5550O2$&meU3JDN`S) zH)bvd+PF;;@=XcSl3B^hlZhaz6$Rgxe*7=e-ZCoBb;%Z8xVyW%ySux)ySoP`@BzUg zI0T2_?(VL^-Q8UR+%LVm@7}$~>2ub-=Lcgj_{m#O)vT&HXDyIoXDoH8OzeT-mugw9OOYZB@9i2A_4Fr z0Dl9w;e*SA(t5@z6|qh->ww*XQbmhrk=*?-!snG#WM&s-)QmNJ_y1{hSi4(E%YtU8Khu;|I2pq50E0EBkzp_ z(rNxUAM^a(?c%@Zv_DWPMqLhgY!kT)cx*Gx)dtfV^I@)EbOAOr6ueA5|1pT$J6ncz zdpY4ED8=^E_kH=?v5tl!b@}f3Ff-Lk3XMAiZh@X7IXNs;Y3J_b1gk~kcVq=-YprX>cBbptI&c`t!o3R#VnWC#PeD4pB9F&%hR8)xn}=hn`tZ2-6I*HW=`1>B(= z?Z{mB^hFkR*|`^K%DKfvX%0-#RtkzEsHCqj3o&z;ga$v=nRPs0@4qSU-*Le^YA8bF zAu?}Wt`^T)PdF7*jLwmVSMFonQcWP0KqVC$K=1ZIut7R1qspF@C(%%B$4UM56qcrV zuAH~blk;^T)xd!@+e^@Hzy6$#pKi>+M4*hxEm0&-!ygpqSykR2UpsJ{=?7%$D%#M-Y^5=j0w0>y6pX@o8iKP+6c$t!-$e-Oghhk=8G^`emeb zI8V@CF6s4?hekAQj1K|eJfzh{j zul|ct)7kaArn2uCa>}(pOSd5SeCwn)LRdRB*fL zF0~h%l>!t!N`_HPsG9PR2fic692=34^V@va@+;1S7?`~;u`5*lA9|hmX6%re`S(gj zp)o56v!Z-W)uL@UfDhZa)~X=3aXRTb+49uuq19Q_Nz0{LhaBTz;@w{dj8!m_3oVYA zR;sjT3@s&zZ%aD7c5k!ZBr7KOA?s1}n?~^cu;}A*te@qhw)Q@nf&a1_`ct#kg&rW80&a>PK{|+~uR=l|+F+|kk%B353MX!h z9_4S)C%owB>Bfn-6`(kMazhsYq9jmBJ|#Sbul4 z)%}6EO|}fmGi@}j)p@JrxqaZk72jpY^CD@?=VMgGQ-{C&BQsFB7OZtwAVv)OUa*c( z&u7?m>CQ`&aF#3cP zg)`eN9fT$^1Y^n3QwR;aj%=_~`&n46CRH$5d()ZHcwKSbpo?~Hl#L~Rxni``+@xM( zZM-Q^-GATv;~E9Y-} zV2d4$Ur$_h7SA5P^}Ax9gqJN2yO0KpWSL*UC>s|lB(KhsN0MY|;wc30wU>M0IT~wO zs3ia(2-m$BirK-Y$syg^{Vfe12JiKMvD$ULYj;-Aw4fd4lU25{`|I5O7QTqmb<$*5 zGZBys{g5P74~|x){t#i+jHwt zsd~{cSIX1TiM?aGT-P((`QDY0zN=~!1^;vROVqdO-%J?ICp)No`dUAwp5kiuat5fL z)f=B#WdxeC0Pqi0a^J;CzHev*{}AZe+m;a&pH?lPe6M4rxC!Hh&M|vsNCsF}bJ$yH zyt+(~GnXsAFV`(G=V&_`YkH{{fc(UIkbw4JwTbmKiG8oJt(Qzj^stW63jYzOy}Xb?7Nwc|JFZx7k3|{93%yk$_(a962!%bEoyVoKM?V?< zd|cx$a#BLJrS2VuxwEl&!m7i%I*uHwr2!<-;`i80l@|obumsHga5nGWg#(KPTd8kDV>i zq%eo-tC^K2a5A}*3w90wH(qlgJLGrA@$1+IbGemGKbh0i6;<%>7l1FITQL2<+rs$lH(hh#&x zpC!hosp3vHJ0wDw_smGN)9x7Dy#g-Dxro?KKxxtq>I#V9pm`ZMY)fxBX=!jdtGQQ@ z71_2er_3725cVuOZw7U=H7r3!A9EWw;<5heq3jO0mDq%D;vUT*@1*6mpgFz70R~%{ zDTC$6ZhhE|5Ocf?PIqqHeANbG4AaL;)MH2f9d7-&UdxYHSG4B(-%1S5xo29ohPyS9 zMGW-aI9tXO@g+Dz!(#b>A7NRhEk&(YoMiWH$S@WWtEzsc{LP)*QUgaectsSGaWaT@ zy5?u*YRe{Occpb6R?wHjF%Y#VCrkjR%HK8WV{df6_iD)AiMMh6x#h^XIpaitzj68P#)|OCQZ% zL_nkse3Iiwy)y6aD?qAU6&^W=;FoNUwmH49FuQ`WHj6|{Y*%+?J@jO}c-0 z^eJlgx^+^|hMTAkeX4C6>YSXmK2%e|+u9;C79iJ~n43L*E55r&jM-_Y2Ch1TV_IpM z_kI%jyJ(e)jSfUt8i(OG(4dA(O1Q_k7Cg|QKQ|*;y;337q%x84&|5L zhu+3o>yjPIvs81aamS+##*f=4ZN>OA|5qY6gDg)2)05nUT79mEd3~evDeKDbXwB_%^Y{A|Q6Okb zT!rw!RHcocr{yna`^g&o^m=!-wFDlsg^}Y}6TQ{Yr0-ugZ^WS49gq3iEKe6RIJ-MY z*s>~7vH6I^r*U;(mj^01a`X~fzjuAP!5wYtQD#*}`b69j!|=PjrrKX({M zL9PeoC;(V+?}2t*+mkaWW5gDIh2FLOOHd!}n2%7YYiy*VZ`yABi=i!zQ^2Y7D)1zH z6;G=qDj#b@LFO8(`My}nMX39)2CoBIYlA~`23>H+&?G5R25z2y-6-E$C-9l*MPksO z)%_Uj6u2^jh^%XTutBjCN|$8v$jV%6-~u*RZwFB$C6CApB4e?T z%_M_rzz$KWL#z1$yEujYrzbKInSLChIQZ%D?L@MnaeT3rB-gi~RTNKIuQcOW>&{~} zYnEVJE{ot3XPXJwAPs+;mXiA}rt5uHVk?0OkfH~wig^rLDrS8f4V9b9IZ>1}TCmG? zQ8Ldc4^6g-Zlu?juwiZlLthL|rr=T8_KKiwPCbbBBNk|(p|cxk6posTABN&Hpysu+ zlwi_7CG|S+3FLN4mR-+jyb}3QITMUrJ_!S~+_LBPk!SDB0|k1cQA3D=!VkJKP~n}* zKlp=e$RPq+qcvqy-W`0QzVKvmOq4crR7cbs5gF7lLsXqotnC>`q8Ct*Oeqr!D&`KU z!n~xfGMpEHVT{nkcg!@o)WK_L5nU3(6il3T-V7Gre%)z4d}a~Jt#o&E zU1Q#0{A3JDEyHT>R8l^c&iA7(m=Yi(*?>v^CifFlNZCvvGZ~X3Hrs=kheHE;fKXRb zaxmYDYFhEruB8lqDdZWGX+FF6N<743qDwI`D}B)o&}Ba+!2zu=hnsTmPCL=?gWWe< zfE|H;d95`%i&H+5kDu=4+32foO~(99WQi8h)mQ87meCTdpZO5ZY;AEvu{kr&L5D?$ zXK&VTbgMUftATr~7-{%=0(|SDP}`dxs7l7;2IYs|QOg9;3!}eQ!>#)rsseiWnC9a2 zA8vR(gJ$LgFAEW8CeNhYX1T1N-lJ2xHk%`E<)1L$L4CcE`93P5ADO+ysZN72PNGeq zb6C|GAX%cr8*Ihl$s*W#8B+BTh8e58+zuE|o`@&9Rm6`uWCP<4h2$l4rkF3S_(N`3 zNtnHYz()lMZwQRPM7k+KJSO0lGR8aEK0OTPZ~i9ivaUW%8h@4>Y#FoQzudvZnU25F zias3%$GqmiF{0RF|1sMYBg6{0$>Mp8zeDXJp^Fmi&3`AoXokfB@z08xH7Ym~c;y!s zf=pXL=JG6pJ*$Y{0)Gduc7XC8jqY+DfIS>I@M|0HMAO_$d?7& z7anaBNm{r)&G}5UFg`n{pa#fIOdxoKo%x*(Cw=#vefN41H1H`+*BVpFjdE7V_# zZp%g3pcIdWteSJg5Vaq;7|jSWp|w`jC7yhEDk`*yK6n=DvEXfPQaIP1`^hr2cO!k+)F8y31~@Ho^}4^H`QQC>d0Ij>7nT( z;CQ;>6aNdNQgvLe9>R(wG|LvjW4dS8SzZ|%LCT#_6c6sh$GG~|Y?R)hro%*x;l-Mi z&7{QkvqMq0lwHw!Ed!Q=1KOJtn9)SAP}S~)Sb`@dPRfzES$^}_vL_txb^xhL z4&8XQlhR`NH;LodyAqnQzsSn*wu(w;%w>CWU7?wWeN8|`o&IZyh&~(rZq!JrKomtY12jsv96k8f{e~KYX zphr^XN~#bcjmq%PohW+niX7=3x&#=PNzxR_ZXH=2BGEsc#EPoc%6jvpZoD-;8d^OC zZV3j0Fo$Eow_T`5ml>=lR5?hGW5fHg97dkSRspweDUg;#cR%&|i0$*(DLZBi0ppD~qPF4JExiKWszoLZB zE=8enPcr*2M|x|ab09_5PM-CRyxl?x4dCv=o8je)0*}kC>|2VFTL{>!I3{Kmchbp@ za`mB5xd2Ftj}T#voC$0+SOtUXO`?t2Lz0d)bh4;IFY#m+FQisZJy?3ABao)Km zycL=_9tFL8BsCs}ZtOXt*|N%@y$0FWu#p$k1TO(}3S?9?OVEsFbx3F}eKT^DOgv#U zEcEfGDqoHaSHr!Qr>U_V z;Xtl-+q5WlR*wsX4PV-Wb2--|!LuiL{J7;j}yk3NtZgI;x50gYV=@{j^6g#WS%H&JVo8c4XV@^oFh7c9<^u@RL z%-1+sl3pMa-zHOUJ;84ceR=_S`C3Nq*{z8pvbnso`dt|T>l~nlZa0VCA}&Vp*I3Hq z&kWZ4t%$O8sW+HJsTrj+w6=@faPl7SFGyl1{^CYgCeL7|1%Y{iL}b+kkpfw78HDda zaG%~oN;WZXlr0hD+u7>S04sMvIgwyCbir5=a%TC&JMM56T^tI|McCg$5R2B+O8y~J z9S#{LW<>ShgKM#+!HcZ~cUMiBQGSOCS<8l*=G}L^?d9%hR2pwp;%)Qv6e=bnwU; z2!M5p8#pp&_?va=KVI~oGL^0V417P0`3L>^@Od3=*_EmE%VFA%-j3);1Yeu*Y{ z8P8ROm#YGME*1O|f?_e!alg2@`2wbCGVXAswg67`3jBc+_|3_qE0fY+96Si6Ratq3 zF00x^uPvl-jk9416xU7PaYF1VXws=ei^pby^hmhbiy*SSkjC4kT1wFAqC#{S3x1}Y z=wd>zqUWEx!IWXE%TVaDe^;X=II%^MP+wf-ejcukbI+_n~73#!S3h{jXY3os~xPH+jcQUsS>Fz`_`Pv=y$o3M@9SfgHW3I64>wK-k z>jNs7;KX_xB(!gM3jdOFN~!W)w5+hv`7C9X*BCd9LUXDQ8ze9v+Is<@dxGq`OBz&e zQZ69CZV_@QN7!J@f+FC^F!Q{POS_IgI9NXz-?6k_9-~B+Q>%-Od4Q}W)r&FFFWtR9 zcC0{UYTx;M4gv?+1YN0)@JdtO09N{a(-`ucg+G(Q(|*l*T1GP~-ud13tqIDaIfM1M z>Vbza6N2>vChDf%yOF8`=F3I>tFuaOy9VtDF4SurB{XMZXC}lp(S`_ghA>k9HbcC^ z`t>z0IZxsbyN>{tx)S6MCUgRIPnHPyJPt3?0#NulR4CZn{;(iLL@K1HDb!uTBN_Q87?X8c}Iq&Zz~v`O$gkiJgjF9MvHzf2yw; zQ}-LJS-!REl*4hnY|x_L-JH~%(_3eA2QzLP0YEqEr&kHIua1@-DsYhyg(p*y#y%c~ zh(=YilB$;(@rw&jFp>7w!LsvRTi5kXWIHXk65%FUGRq-JItQuMJ8v&5une_NqCk;b zv|nMr_t){pvyh!-IRMyPj3G>}B)k_yZsQiIP-+2M?;tI(@6+CL;meN{dZe81xQD~e zf}raIpK(kGLgQZ{kBrIj@c%f6|ZWU5CmxF z$YWf*E~E2Nv;X>9v;^P(TJd`bnLeKYNenb1=xiTbYI>e{mnt5i;-CP zAJHJ=kk`H$2#Wu{x?jGM{w=%3xNWB^#n0Cf$A<&(=h4;GKYoPrSQ_Lw9S?S8!1Xok_fVJSmWPQaLvV2e6Cc zXiu@^18$ zcuL>4zXBBL_Q_adi1LKpqiUxSucd1QdJaLF0&F5N9wz+C93m~P-=`W+Ke7IaT>sQL zKAp}0Ct#h^2O?LXeez#Uu2xJAPG)vC?oLcLjzE!uqlrD!f15o0Bmev1hYLJv zeN~O^qD$?OZ%CW0+?cNshMp)^@Mz!B&uXz`xMB!h`FxfAK4RLHsJQ~h`q**wG&J3X zE6yAgNz;@vR}`-Ou(R>-;G2fiNa`evbHOkv=TuQHOO&#oTSM8%3PpIxDiUuelb&S- zU8Fb@VnpiQ&5&||y77rWq6sBX z4#H|ba?yz}Fc<33+(rv4*Q=F&6}aWb=G?EcpPQ~CSk0AFtR5xgv68@{3WY>6&5djI zmAr0JR-?|cPRNIR_V!IJz*eGth0A3_;M4Qz!9BGF7Z3?>F&96fL2KUUpT;`iCxf6( zn(7s|Ob26}WR|)hz(+&a39)!aljzwBSthN~T9)R_l9w+ncPMN0EdP?^ZRDzT=+^KQ z)hV)M#cM63JCF*uV+p^6oT8Ouq+1UXgU20f1>eahkJElQUV!!-v)H3+Nx>VBDT0SY zKW)zpGDZHFD|GtPYc>GPm6REJZyXix_hl}GofynKRZ~n{5;V+bXzUMZVvqn~&Y>z}u>hD077s&4TN^kf^2R%=u`=k5^U8n7Rd8U(?@J0-}^{tGviUTk!LvBWhesbc5(f$|6W7a#efL51}nS6%nA7 zrXL@34C^|T5!wb3mNL-N5*Ta)ow$~sTIgWJLRl-;tvxBjdvnCK2O1~NALR3?DJ!zX zf{`D>_&R=8Gd^h-o*2=)TwR&c)Hlcz4`#15m6Ff%!Os}%d_T5%;njm)h-JN9sM$(l zj01P*@$OYT!Fn(qq zZS^d7TzT5j6Rr@6RZl3ZCC^fi=+u{~8+tVxf6@0Hto3JYVa%aO{KN~#UCdOAmJ|IT zXFM<0`6!tA&b`1~P1yP675=S;-UO%;j^2OU78Dk70N8*r^5?$c|Hym!KgGzOOy{4- z;?xH;V0@DP9gYX~Rm6ZdS5ZFU8!x(t*Ev~Mjep8Tp#*T|gqVknTnROvvgNx~fBsSt zgj2Ch1j^A4UX;=I%k&1`PSaNw{+j`;dUK@Mc~K^T#C32cF~fdQGOmbcVsr(9=ovet zG+$_FujKZHO??&TwJfZGc!JttSgI`(9ynr54VY~FI3ZQcG4o8ycliNF9vVsrooNyQ z%;v~wWqbHCLn4WySqj;3FZuD$O0(GbAL0j_qL9j4Xx|%G=563BW7vM-`jhSF`4hh5tz2G-Tc%QmG(D1iWbo4cayapd=;7+A71= z`Y@r*%{d>707eAx?9WIfv9n3(le051@*>yw&9qE5-zFIm;dT-oP8L6~z!JV<=A znqpGNlL|GRLI>HKQ{kG#cLrayOlHvhh{?nZZgvv_k2Bo|O+vdz!^?-#w zCmmznq-8?|-~eLXsg!b0tCAP(I=;~O`lid$|3F*tI&~JCyeUgcWcgOhEXk}$b5=k+Bt%tgJZdPXmnAJpODZHwn%w*BpI-m2TFXA^fWRjCn<> zJ%FkqA1Mz{chQ9k7%>n$Ze--xcWw-BkvUa88<^Wj^Ce~6D775nXSA=L4r9&lrscVH zKxfzMSTXQ2jyP;7b;?OWa$kF!I||R%a?IOdS}Zk~Z*Ivm3u)7Uo_Dp@T$hv-!Wwii zV~09!k7mSOvT0U&Bc7Zcz-U8b!%{}A$2xwe3BqHKU7GL?78I_~=cUwSH2EtB+$Um4 z5ch5L6?K|fI4wYTVg0voxG=dBb4y@Y-T>3Rq3JHF+6$iiRr}gXy4?heK1r*Bp2a2Z zI7ka`h^SP)XIB+j-77ndjH+@IO@CDbm0z(@a zjh5}G8*fvZp{gsRN;3ucm^GI$@u1@nG{Kii<<@0GzLt%IY@vDA#ej951yn>K@Vm;4 zB|y`9!F@e|TLfQS%$Ly&(fFxCEg_fUrJrwAsmT?U3Be_)7bwuGEM$L8k4vU?mtLWp zEj}1aR`R@pBXMmS-Fjtk&ZMg*9t`j;z2C+A@_Xww(8*4-ELG?1+h!6@xNAo5!#rC- zsZ6yXra-tqGSsvxf8CwI0De=V95n?ml)!wFgjruxD6I?v&DFLlM!>KsbZYH-J{2@o zIO?ViN{0AtlQFB}_I(F#5!xD$2B%eRM{%l@_AwKYAR3C=&KTTmV@*^9q>93Og!BE?I$P3vK1d#`-3-4MFS_iaSn+98d zJ%>pEbg>(=6^{wVx!ui?qo}vL+$c$Xhy@78nVnD34TO#otoc>WOymlCuwA8oNAn3H ztxhT4Nqf7%!T@g7&e>M&q>1_`+BpJf`M;KG!#BOv=_(BChUA?Fv``AjGL8!mmBZT= zElnuJk0AiWOV?|RO{fvjbl~2xv4es;!q{0)+2s|6!f(0yzrDryls9=C60Pc;fRP7~ z=6H0Bni;Bf#+uT9B_ArS#n;3k`j`=V z*(Zz1cCC0V-WTeGUh?AOJkSyk`%u4x?=}yl)5?D2b|1X2$Po4-%Py#|2_`$2>XGB3vc8rE`#EAX|14@L85Kk{P zHFyWrR!1uKn~hZP_%R`daN3wH-;cp`MbxyOOuNUv14$ANGw&ahhQ=oou?xX2nqhZ} z*$pCXtIlvSEvhw;-IcY(J%p`&9i+$hBA{&~%86|d&9Oq`aTtDeBx|aNYQ-{NEyF2- zlUU2+Dp{L0&1%QKpc>YTSXdnun16TP;GX>)#No{HM?&0GaS2!oG{MtNsmfh$IJy0X zkOsTP8N2rY6;@TWT~AjwY758JxD^i;z|ki_+nXW4>UW^W3JYQpP#ut@mXn_UIPwrr zO)wy|F^vnw%FXb=ggXoxMKYJWZxF>M#x1CycOMHE0k%=H^eenCknuGv_q;H65URAq z?t9@**@*-o-qSR^Wz+xpU%tm51j7|$yLSfs7Lz~(^Y{7KarKtQKrLKhXWfa~i@+w>RdhlYL+nwKjR%rKY1iq7Um47oZ^y#}>S zcpVWFDm$$(6J-{OnS;8jqGGd}n!tAo_%r&5Ib>+hCD3UV+tJQoCUDGb%Oh~p zJCDk`gdU&wtcbR_b9l-8k(81MIyB>-OLUfzmkHtEbrp1k4*>$%hp?ByvU5 ze&2!&Qq=(J9U#zwAen6iCG+(C`WxCNgnEYio)6lqsFWC$#Hixc^du|#h7j-Y0uYxK zIFbmwV&qlD8^I|ACe}78uBs;R#>}DA0PHVMG@mIoa#K|GiJ?b0n7bd?3rlglMaY+A z{3#aE%+U*NcS-n6ZGH_;9o8$c^xpIlY4qMR9c+=)yq(A~g@LdSb(#ANN2PHuuy$sOr`wO=~tcs~pe0v}-(F6!5Vw4Koj`A)frXfvJC`b-36V6mi9PO8TzNL-0-= z&xCk20O%y$^P?U)zN{L^g)TbYd-rZZ(+j`d$=wIE3UA#b!LwzVu_v{NZc&(;<16Xw zM3MCa#A7dVmZ#B6| zByow|pPInn6~JXX^7cJUVS{$>@r3^5vPSj)z&xFAbS*#j zNtL4vJx4U{kClo4>{pt9V5GaWj3g3|>O|#z3XXc3Hp&1%Hr$cL)BUb)(jQlBKuVk~ z&I<~@U<8e#GEPlz^{tO^K!D91Z(Gko?)k}f>Loy($zO49du{jf%2a4BR!@ z+%;$XF4um)caGThSMkg-{?CvTnzoa?4g!pmn3Kq7d$0SY@2}5p7L18-a=(2&Z)Cu4 z#%|L;&JC$dh0`)&<8twj-;EF1GP3fA8SUGZ$wg>)1lBWJUAW~?!_Ln`p-XE-2>3fH ze)OP>UYAo7S0Nec*%5pRWXhs6@b#RtZ53@DIxRd`g?x?4gXJxa1Gb&YgO$-~%oVkJ z+ztML+P%Ir&uEX7!O4C&NK5;E&rRc&FiA_;g0#uWHFa5+*48le{efsOx<#%eHWYIg z9g>WlN86ndBFQ8QK}FTMq1`jr>i2Ib)sWLq^mvy~S#lj$l2vlpMldkG(|dMt^lH-9pEYUzc-CkajG|p}0rNOSHasNctY`hJx$ zc2jhu-PFn?&{+8`rCNVj-|HL&ZhVf;1+O2uTQ)Q>TfkxlY7(fW0j_!>_N+^CEDatG1$t)%qGPe3 z4o#QhG+6=%%68O`>m4Q0K=xjO$)X4PtJGcU4%FXVukHfC4|AWy zLH$%#ZO>LhD@fAptS3eZ!FV#}0BT>T`!H>yk;$d7zA(s2F|+1pwJlh$r6M$zOIhzC zZ$=65Vy0uxoz&AX9NcoYMX8i1OYY)ub&xNBxiVGE?3qX6bKHC|*W@$90Gp2c#r#Vb z{-VXuHz)g^5Yt1YOR2mYsfAGUonvX~r+|X}2h+{B3Uq-+8az}KX2zX7OMOfIG@amH z^(Mk)z=}k-;6PdIk`(@5B^i#ybjV9!CC;eR7i_J5x)}6&7Tu?#V~Ndb3^G&D(+rK= z_cX3;OLw5Nwqk-#Svx){Bbe=y+r2)%8o4DYsb3O2IV=x#V?@y`3CT*b(%odK#noltf z%IYYp+#~_L3E{}E4-JP-^+rhR#z)8pn}fa|2rYtpOH1?U>r|}OGpR3VVAF;>w6{Nq8NCYfTy5RiM1 zb6?MLnZTKmn}stetul1S_2hu2Zi*Y^pN6W@_OA)(5hfAnUREh=?T;@yNK@NUWlI^~ z!ot+euN}Glkklwr%rT%TDvNc@k~sw*zKB5DR>DrwIj?;?g7zCM-LFT@OW?7sfdfj? zSaT0A#@$^Jw8)il&0`NbwA^avVw;JOV6 z7PVp*nR!ivCdK1j+Cvsg2%`6iQ z*_m?9_G&r4xIL3$#FbpCN34|44lh2pr6-dMe_zLbW*q0>&OoL6zStuOdMQ9&%2C-O zk(Q(e0#)|jYBWTAbIF`#S%AeY+P==+G%hF+L1=a?3GUtuvwYbx$UQ#{WRKgiAEwyJ z)G?pPkQrnSqTVG{Y=J%b+?p3rhcEVev~A&xY>?drkdO8b^bmM4Otm+=WKO^~G++3% z1ngRU_G9{jtaW8T-<8sn!R7RSlORh)#Hg?eh*Uv&Fg|h(jy*&!VHOKyncSYl-t0TE zA-+Nc28%nD%x-Xk=Tj<5F~Z%3uYMxu;}Rt{7VJV&m4$p+=^Xb>HxlD&G}Um^I+%3l zGd!X-A&A`9>%^4sa07-t7dp!))ZU!wnD^p})FVhTf!&pYz)%*8fYy`yFxV=$6K1>~ zk~xr#r+@3TF%c$88-Wpq1w~A5sQLrjxq$=VGiCElS2h3@W=9#|u5J)2h`P{83v~(BImX=a)5B{AX+NPq~ zZ!=}}TvVAIb&1>&o@IN+Pm9Oqoj<)C9VS4y_)h$shFJH%ZvMVeaeDf1%yYaUPDxwf+d~5KT;%^R{v)au4o;pH>P~9zt~QQV|5=g0 zZz%!K*bH~8trBX{qNC5tVicOnH9|q-s@j`IP|GBTl16qASkOc*weJV8f2ed_gQ}qI z)dzleiRIJNTb1@%&Rl6tpFW?M+Nj>z3iwOA&#kZ6VyO|J@kVYSmsCt=ug29-Tyv06 zaZ=SF?;tf_)Xy}qld{qPT9CAXf>2K5Sy^T$S6>wbZFwN>bP8;GJRIJ(#pl;mi>Nl; zit-ld`;D=PiZ!@^_9U<|;V{Ak2{XAi|% zvQGw0W?o%k>Ra`|>nr8vCRDx8(81|83HNpw4J0uVddvk42$fN zWUr`>U)reS%Y8hK*>$Kpfw=MT(P;zd;}(WDaO12(tw|==c8{?&_@A-&!*1(zeuMNo z@Nr!Y!fL@{(6@~~{D;?^t`ra75?Ya8SjEfW!g5BkO!DxGnv`i_z2|~;6<=U}0Df|$ zB-AwQ+F(&G_6=Ycc$hMWT48;NX}8ArYg?or`h&wnU$^zbm6}{0W2?G6{0qnUPpdBa zLmF=kh$7{HC{p16e@y>p5UZ>FLtBAbS5wG9$T$^b26tuw1Rplq)oqNY{`u6pAj z({$1_&RD;~EN1l^>H{Lj|E729Sou79YMCoA1WE8&j5pxvaws&2?7-w{Q{c&Oi|2^% z>71xK;02?Hz6&+&?l++JVByDdu+_4o@k`YSHeZU9P=lSNv2RtaEyp<}QpK0ijT=!j zwXew7U+gc_0A_6ndmo2p<(SqHa9J9fYizXUECg?*ttZ;Jui%ogg&7GSpm$Ug=BAor z-95K5JLQWh&1RK8$vw>*07!%Fdy&kZ7_w2l;0tVyX&3F*Le{ZDqY@X>70=^>o$oyp zXCfR~DAE9L*mZSOO@?ln>W4W35SQkw>F)0K#!uT9reKkFHR#T9S)W0M7g+g@;Ra>F zG(|iIcXS$h)KvW%13qo^2rIV*bVg%wDbRw8LrK3&v~orr4*fY6%D8Ed*r@DN_6`cW z6%V^Ozv;#t0Ch0k%4W1%Cjh<5SbumeP1*$836U5e6D)o`V%d9lfX11PF*Nzbz?jt+ zUc^7{4W?3j!c$lLQ@GNRnFA&*N#V7@c~yP`eDK2)$|# zQ1~9S0po8DS+u@`ulkI9H}^os%Kc6HdxWiaufs5kv=!1Qy>nhWR`w=F-{V%|dnZH9 za`}>7w2ipNJPWkp{(k>)qTVOU%dzw)m%D)0Pk#xTF;>9^meA>+E|Y6bYpKfhnR0q- zy;X_n8*lg)r5gglY7)0l#dzupB@&HLw4VJOUsI<2^N$x=3&$&_OEa=mKlT^*<+kDb zb?GWA6~^P}`=K^Go7bw`!gXENVHW5N$E$VdGuTTL&vXM4IvsTt5apu#Wy4xyiDTfO zo?iOncIdmgC4PU1`sYXyJ!Ls|br)K|xLgLw2LSIzGch;ShL2C*OiibKDgLY6uS68f zJYi3F$1Q_7o?qmYeRI!;@E6JfLB1(!@+XYiuQzWl02D#h&NcmRV!KXQYDF6_-i`xK z(ZPFQ(r?LRsD1K1$rrEIbF)~1(yi}rQE$}DBlqK1v)!!kx2sOm(A!MVd*CrvdisL3CkKtuf>$e9;z~u#!Rm}$~xHjl^G($KD=4xl`2gKPV8ThH>DAO|I0k@ z@elE3(jD}VCqfgj@bUj&B#D2ZP!p$L%*gNSzrVeu$+Fh+!_P zJNavs)&bwWaR-tX2tj3Yb1249mQ!4MRfCns@i~?eLL>}umCp{RC;cGce&n%Zt0lW2 ztJC|M12L$Cep9C@VMfT?j=^6EL;afuFj zBIbH7Yc5)@En9<6Fe)`swOThYEhWdO{71DbqxJ>K`%0B-%DYI%lW!V*)UuCddRuyfZpJ=@kHpn#;)Euj z-tT5o*UFV2NBw=ca*cx!WC{VLH{OjMh5^q0z3OSL^vXY?!y4yi)@%;gQ3}Y5Lp-5G z9S!ISaNVT6X5hN>so5A++Py3Ec`P&CQ^v9l=O3P+Ab+6jMcE7JaG&Xh#IbM6UH(mD?!4ARg zDbcvQlW60S6?dZ6=}WGi&RVxrU(#6xk$$s@_*}b+w-#ZxGu+wX9@DVf^}pDD{HcQ? zH7PC8z}+GlP*wQ%xTWeg4i^99mTLXc6e8-KdwY z*37M_ae zM$i5{3wXRm&61gR87pyVv}t2j79`nbAwvwvn=u3%z(Htp2-HHmVzJ%#F2~a82jQeb z@jkKJctZ>gN%3xm0_~xXr`L3zU?=7`>xJU_ERNuHqBFU!XWT!yrK!d2knX7M6aXYb z1^+a0k8x<+aw^RJxLp%<{TEtwzMu7xJX>(pkt4TfDqo~MF~yRmAohLR-rU1qK?+@L zJ*wlp%Xv)vYb2>vwnJPrQN}yrI_ts@tCYOz(hmi8sl&G$N zXmE}RMrhfGindb3sleA@jFX9Nmu!8p8%GJG#Fm0XSnq+PNJ}JhNvxE+qtD`+a%CNp z_@&_JXIa{!lbA*Qc<>5*zbxfpzBi_qbIiUx;R}CSqW$INPh|d$f+wFat$M0|BR+VlA;qAtxiZRr@W-i3;wzZRiaqM-W zdW{wPE8>A*#v|Vcu8)ymG-`hO2S?u{e(b1$XcE*TBfwhRKIP|G|0F8b( z!U&dt$&^5oAqLZ}NynO1+iUx9eYW4B1gB&EXwN68)q#g9=Pfj?MB5bWG5kwa#L%r6aH$Vz&(o@|9W8B#=mV9cX*^ zl@Cu3aSCK}JQU9mMm;WB^4L=XIy!5h$d4%)i~BfReZN@&O*m$gXoZWLE$`JBeQ*Tx zJ}T-0b_wntvo#`J>A!Y(Ofmn1Kxp!kN4bi56-e|IKenq|8(fPC8RT-iQ*ZRgNI*-8Q<7>hp$?^=pjUjIJ7-m6eDW^|JSRpHT)66;k z6l$ijQIqF09f4jj)NwkAHE9z!6uWo6uoiYnR5l%ws#B2$24!5rPD#oEA44_@=runY zIf0x^+s=k?MU7?EXw&!Z`>u7nqiovyFm2HRtpR#_YJ*3?SYduEV0Gp7n>n~K@yvij z_DE=taF}%rU=G%H}>Tv#GKdaSU*J%;~? zZsfyCHi!6nrxaL8Rd!J5>|w*|keZ@?D<1P13+-L4xI(}2s`P!&Z|dO2lbhLzCZiPY zRkG(^%L1|8pojCRDGOKDgBpJeqj4WK_$X!9E|H{X_-4RO>F=CD8gRnm@c``}HO%hf z2UhPZ_&;6vcV!0bDs-&^T-f?AH=lnldI%dh8~k&9HA~qFFl9mIRnoK^yP=Zb1c9D~ zs8;>1Ny>;Rlb9DChy2b)D}|-)dU}C+U;IQ*8jnnNT^`Oq>TcHb<4|ua*D1w2hY!hLwG7v%&1(e zYy!uPeN_!#jdgZOrl=HO!F|B-E7mB)K7Hm&PLaOpm+vUc@O@u9KL=LBpL6+Kd~NG7 zv6!;2g|)$WylB9ztU!+p*mUx*w$)028S69GK}(4%NEcrx`~WwhfPtkAHx>vCiJ=TQ znnx7T0tI%qY7P!ty=Q>6Ut+~=IscsG#X{*HtNe|N8HJ!KcUQT2~4}sVk;>L@Hc%+N6}2y z6XIS$<8p{F&uyS^38++l!K|4dXY^EJy(5U{_6s#0dPjuSN4#={j_}|H!|x_p9YP{r z69aX)xz7*WHA?DX2r`IJaE5VK^q85)=&h6oTV{`S>7p!BOIr=|E(j<4YBXQq8``M%v? zbO-(#*=Z41s4>v;l8`Xic|QZ`c)B^~j2wTN1R14%BLtGSKi&p^zY>hS)oN}4=C(3` zR|4+81la!5nE71=f|X^g0Qb~8AYKR#%u_{Zy;g)8gJ*-urmL%QT&HSzYKoJ|NTN4r z$v!%2vz|y~vGr)I4mvz8iJlJt%VAgMW9(uYlZd65otv9JfekA3{pd-oXOyMOTwC?F zjyLjL8Jrql)X|wl;u=V4QKIG3Q1R?zx{sg{T-SUm)NtI1g9q~=Y1ktb%P`W2)KkOr zaL9&1qvAE^kIbbcnKbI!HMMC=D1R8a!#fEN6bztv;HwR?Jn0#%eCc?KmOK4ZI%$zaW?F%K!bDCqrW4d6=}ItDZWo=jIq_AkYz4v=BQciPy)@qo zHTHn_?KQyB*C0zrrKIf$HL6unu!MBRhGF5U>hlr;-uaBTkbu;Ps@zK>;-1_i(E8Ti zA_ouN;jz8cy<{n=zDlmC+>~#(8ucPs9RYE zHS)mg#dNX}17g^VcT+e|pXDl{!(t@{XP3 ze>^fP*~rbwWAdhUBqbBs1;Br^r83$xK@-UD`G$#{K!)>5sL?yr=GYUdW2ZQphXZp@-7_f#!-H@P3CuhPq%{-Av~dZa27rs7@6m3Lc= zq@&5I=oXmd37BT$F9bh1`)uDQb6v5>oAof>*6msw^_OYXY*k*(kQ8yeS%n(3UkNPG z9~n#xVdr3zcb>OG*}zSYm-kWcb~?j3$C+uI3%u-SEMTfU6rI|r=H<=QqnAfr=&&UF zc+-Vhs?7~0*x7%M#pGb)%s9cJ6Iimb8oLOW`45ppb9rAdQ>h=|OSJmb_=#Xns^k5q3#> zb+5&?9yl9wi&&tT*bkKb`eq7`HKb5agKuS0YC&auhCcEb-)SETN#qMSWd!y1^j{zf z?!h`V>X}!Stayz(XZtW4Eha(;rKP7kh1|HlNE;um8S7;tFzk|b85~65FTcPKPLH!5#GrerH%GXeTmd22c}yUtyzZ$Gx*~pHONsH)h@BsVXAR{y>jaUB7vcfr%NcOj+N}b=`z}eG@(WMaFFw$zIx%YZcA<0BzQXJm;CaFyzuX_ zQ^C%cGdVyOLjvG(zW;U>`_mu)Hh4~ykgIt6m*vGKX9)Vd1VLRM9jXkw?ZV>|m^q;83EnfPrNQ$3 zhgD&Dw6nZcC5;b5|>bdf_#&jeR>UZA?hVePSCVf57z7fBxVj&URJeT~tyY^*7&B zT8x)#V?1Kkv!6^cJ+BXuh;Vdrn!hh=vcJUHN=whA7Yfvig_YUo`Zfj^!~d_T!|?R7 z^7pClWI&T9^xyue)GVCMf8!22mp`aRh5vE-n*u9D4EYNPFfqbJA49tcp=OG>N`)WH z=k;d$gnDE91PK}PBp*M$-GFEqC9+QRTBjX?C+3rLS$7p81Q``ux2?{@btk*6{h_L= zEg)%_TU_%LQK;>d{(8np{Ge3mhq2-dNvTRrbeVeTqj00Pq zJ$p$}*nJ)AzN~Q(*U4~msLFg$o&XW4F3?h4R#~K~lNh?OZ+ziDtDxJdDy=kis~l`P zj=S{A9kiMWRvS%T0q1L*o$KB(6_I+raECDVZvRNjR4XOAt~lCqiK3d%1rRemmsZx3 z7v!aQM5saxuJzUkg*B{NWvDTdVEcxc)6sZbJ5H{4`-FIX3S=j)O-BwqXJYFqPZjED zWB{AFnA+eAXk%G&;>fE_Ep?tO+sE#^k|dRgp11a+7EBhCDmz^GE>oW(j3Iwk1lZah zH|8G7bbf{vQkyKfiuUB3I!_VvFkCnX(PNgDZD=;{1!niQ$RXlm*>zOeKlyYVD)|7P zHLm(q?gphbA@CKFJpUDvV(#_GCT=U3taii{_QhU?>0X?U-0dB)3%ds8d0oB8o1on| zFbI0a1~bbUN0gq(yiqd^0g^25U<0cWNyg{P6D_&`k0H_l)&aVlKx_VI z5@+Tw?Fzl{NS@z#NSq@KqOdc1DP=}DOeu$O9R%O-H3xV|>djl2o(`Cc9=A2@h9BHZ zpPMwHjZlg3^+TMS_nmO5l*1(Il}ex_?mr94N?HS9Z;UITO-S#Oriqkq5_H6^N-h;> z+ji8650-SVnfdiy(t*;)>F}W7wqv#nyNZZ!|yC zwauH&v#;o%) zBecUky$7Y;(urIn37+X1GCOsQzItJoG7CJ{O3ZPKLx%0!g``DK99@{&b}HHw(o?w9 zz$0{SsS~L^S%6R(&5_XCimmIF4s-=AQ*7-wEV`KXFVo7^R0@n5UfJo?u7U{=pPLg~ zbtlXKY=|iGCFVgr5E+JQ>nYw7l}k0N_}&NZ_@ae^Q&NOI(OQD6X!eVzdf%xZr?m^5 zq8&vm)Stgl+R{4H`ber>7zejHWQT?KXXZ*UD5?`@#HvzONxX3lF36#9x68}`ZDO45B!DczC$v1xJ#6gpnkL4#kLe0YRI z652Fh*aw+P8oE%T-BhAEYClixI6V#ylq=*F^X_e)ErtOB?i5}+>swbgC|dkgx1rIY^su{b%p4Z8OWqR3_c zwIh?aSi9z+$DbsajFhOzglo>D0_j2W%mHi#)3GA0BLOUI9uMydo6E^vjex77h+-49Rs>OpI>nnS)|ZWnb-djGVS9Kdau z=PH2K0QNEj*z2#oApW-3pYY=MAm{InV-wdSDI@?ZVrOY%qaxqqJ00B<+*$$|04X>i zBCzCun_apWC4IX&)N=LdjnY9EEP1seA!BTWj3C?Y5(vIVf z*F`ZG!*t@Y@|$yl9YN_A!rnz?>>a|I-Hg{#x5Xi71GgEk=~c+J7eHQ%#w4ZtwUaz2D2ccj@1ZVA8lbKRO z4T^;dWKn7wDu090OfWO5q<5&H@!94dAb-JAlFljt)vo4wefu~5`{P+&F%ZCr!+_6U z>rVeOL;fR){oM&&;wB`87!gIgEUc_feV6$BY+>nybE(3JQK@uLo$=<}v#?Ploap&7 zUnvBW&uRn4b^!N&n%7A{;P`N>e>N4$u+awKG=5&^XWj(XzPhv-B0VA1sy5 zv)=qsMmSo8y$`||nw;m%tnJzAiJB!SuBlPDNfy1brgOng-g-fo!%5Q{YXr&_JT*$6 zz8B%=()MuE8XEP+gQCCOAc(#r+c`7EvO(ulN1Zr6teC{*E(vpJfMLv00*ObZdVX~sG`B3q2=Pv%lkPUJajC#^3Gbt$x6@q2`O&24id|a% zQOMVq*t-zJ(c_Tb>X4B(L76MhhC^m((}#hfLthc>-f(I@ZEgHqau22hrsLFd=a7#x zjAM3K3zHlW`(9J`h}Gb&T!irb`MMud`IKp3TmJ^LZg+xyF##Gr7C^%%2FMKm-wGuE zg`NL77XP8FV}}eFi}wj4X-l<%QCT)vs;Kj`4JylMX0TwQAlD_yy#fbUj)71G)k6&V|!uVavre{WY&}mH`w0 zJ<$XEbI1Y;)7Fdx)~q9@VY6N~oxzy`T-dd!4a2z8RQdC}{xE0G>wG@UebQZKE6;T1 zef;!+c&$*w?U=byq_a~MXQ2i2I(KKQQLE>9-1PFj( z)jju*?8at4iPcaCp)gp;8HuUiI;!U^tE_g!CVkob6+rfS00ag&oip}u4lJ2XX{#Tt z>NVWMnF&E$;8YEHOcM@i;rnR`GDFOaJWGc{TbQcsb2ypeLAVB?a#VSnz#EKuxRs-M z@%`sl<`jO>pazmTW$hrgtVrU*)l*S!>d`)-QXh+^%SPs z4V%WfGRCiNO};esG^=y6j}vyA8Ln(_`p__m-Wrk*uttpjYtL`+s-n1IaFF>cvqkzw zx00=!O7Ll{;RC4ai~~PFY2s0BlY#{83c)s|^eyIa$1CYnud!1|3nopDDC-D?9J+-A zY9zj~75BslVQUFV6X7J&_HI0Vx? z%!;aM^5WfRRxDE@6QUk)wtx5dDmtj%rH;WX%M2D%W=zGZm)zq92Ks26B54f8?dY1@ zq1y})j{vtE9j5rPyOoX02SVjSZO`)zi1MtL8_0#lCn z^1H6VSWsvW2$ulCx%1{(R(sl>vCZn%n5ZjmP#0u^xX;P;5bv0(qd~(~Zyc}scakO6 z;{xxWB9Be>Be)j}23scux|)w8TFck}w(Gp5(u$J@_$fjD$0hS0*_7m{^%C zU&YsQqbz-ySU!^Zzvaq3q;XnbU#QS}i-q`pH({3x zlZbGF$Xi}=LxFw31lR=RI@#5?UhP@3mnHLCWS`qZj1{LOY+l6dI;6vjvSz|~V&)ml ziLgrWF`dkp<2*$TaVX5&=oWs4l)J;Dq^|rtB7Wv}fo-V7Z7NX|Tm;1)4VKZoP7)T9 zP?!v+*3LW?;886hn|kuerP~>Ev@d*4%kCvwTEs{OFW=f5In#B?PCD`sOFVq{Nc{Ed z4>99tF@HG!}kX?B9tlHWyU&b~^dOIMghm+NmiYV%~ z%1vPzCGZ^sJK@%o95o%}$PmsSQRcb}=CT-zH+8?i^heVUNUv$ku}~ChlGt*UcFC`$ zUO=r#!NG?Rl8B5$3|fL{iPs0QlU*#I^ddX>X#2kEz!?Y*#n(|3uWlH=|IzgPhQgTn zwO`Bu8Sep3A2dw_n3;g2?nSXro&x3eBR3_9=)KEV< zNR0)Nf#Y+KtQ2MrU_|R1g5@=Z=j$2g$p^~bvB~L2x{blj$WdF5%A`Jk*PSgeXwF2X zy-sS%zt8cPoqIDA!7&`pi#ScTdpKQQ`n+9qT>hNu^6`Mu$Hswek}juXmvPZ?lGb3x zwZ)2{vvZUxwLsFJjO6|rBSxk}O`*M>`{*^lNyWdb%@K1mzFXg{sk3#3rfaM?Uo zjW~oDGsF;P5V9wBMh2iY-+3}DdMw;BV-H9uq=t!-$>Yu$V#*YHA=5hVKXW8-&>BWD z!V)Y&bHaL57fQZ&BXOIe{%GulWM6CprU&~Y4WOtBG5vGfDGz&3YlsGZ@%5Bi+l92p%` zJ@Mwc3Qp)t2BB8ha}L(39eAO$`TXJA`$Xcx^o~-`beHel@EjBYKCD8U*Y*(*K9p-x zT3A1eC-nY}o=c%Y+7?wgSLzj1@;u2G-go6B&R{02>3Q-9K6H;6g*NUe9@!@i{1UKpp&>Qn_vsLNWZs=_Y&<9@KZU*`4Sf3g8D33liR9_!>iNW< zYWJ5GuYIzoCX`AmorhV9RWmjigbAu9OSyI&vxd{bKID6A$mk4 zd~5C$eiWFQ(m}fVMbRxl7w?FMav#4e6#K3B`hcF>e?{Fuwc^?;*)liBh^*(F(aYzj z+9z@-bmHk6y1{^@t{8m{iVa`-%t4tz6UN9R2sPHPK=Dp_%=2c`>s7)Xgxt^)g@w`z-g?S@=l4q)Zt<4hvq?u6xlSS>`OSVSs(cl{G4jG;35)7jr_Xr z_4US@E8w&CiJ_HnIwzz%B*EdWT=ndm00*2lwON0WGeGILbuuWp_h_C0sy>-UR6kaF z-#U>biAwYnoshkG0a%u@uj&}9HcZT@p)h5gLeJADDWrM{5{=Y|pgi1xnxOFE>jR7XcJ6BxX7Uz+)4XH| z(K`3nyO8DbJ8n%|;T;_8!Sj1MD;6A`1bb;pulqAtEjt+PGGUw%?5OLbH5m<5<-T8r zq6%<0(vl)AnPJks*CmwfE!*8rrnK5DR2A50i<*a5OMO5;R-85M%)hV~(t={N)<2^s zxlThv{76V~WyzM-`k27&*Yq~ul|5ZKPIpBN5ZEFyQHg#He+3#N1xW+JMJm5Gj3+gx zWU$mqTgV6*NF_hux%P4Xf+a{IZwd7i(BYPC= zXBrL~U<Xs_b}#JcL+_Xw>su?jPuN<6E3XNn#)&Mu@tgzcBct! zam5{~O}lhFnak<>CvGD*@BMvXf!iIjLU9KBHVdvSUpAC_s&t>i1{?@oS$$aBB%2cx zn;_QQ^&uvYVT_j9Fjw;id@U~Z4Ejl&oJo#UiAjR|3pQA^Zas6sg)>+1ukx*RDU)H_ z+I9V2KS3_0&B!gZE#Wb_2;TO1k3y{ZvaWnQZq2WFsflhx2AM{%V*l*L+K6SE>gw(P zkRJYdSC0Vi23j=r2mJos?bOIukH!MRq8#w~YYP$v|6cL`Y<=*eYTyGHP(>bn23+QH zCAGD~BI(F$uRj&?tYPHF)+4}0ZqXTVQ*d(LPilU8vrn`b!Ob(gMBq?c0E>QNFYlI` z9p9)(7+Y+Nhbf{VYD1!qsibI*-Rp7rWFX6HVopl=v*wF#21_iu+(QyH-codfn$d~u z%TLRT{g429D{Z|Kl479LJ|4wc!;?AH_dhzj-`x$-udDYeK)N-W&1R$%^q0`y`%Gt+Alzy$etx`FHdv~J>Vyg|v| zuq*75LA_VVtbJ%UTiPUPUsW+OP=iV_D|5rEC(d_0H80G;37}Mkbz|20N+R}gRgF`A z1a6rgO`NX#4oz_g9p*BP@|&vT!iI8(LUDx|(&UU)Z^teK?MPhfyz#}`{NNkCxxd_R=#fRjo?tDmfp5=07O#0^f2db%O`_|i67pim z*mI0RwK7g|*jmc{QL#0klAabjG@Atb2!6YJ>l6K88{nc1lfHyPV?<_ck(hgW9+k3f z3Z%52w{X6u$W#!FrcK~j{1l&3C8)1XmlRK5Hb-)dP0ClDjB?X5i>zfHZ|kn9zr#dn zJF|pnHpRj(Jfu=cVphXL7IKuC(K#OrINAX$e0aQ3Z-4J_HU}#~{+u z)(SY1M4nFnB9RW{<7AyOMXg>G`h6@X^Uaxy+mm=>rR7v%nD; zl`+66?(bfQllOWbZ`Txl8egfav4d2~(VMv?AyRG{V7-Ux9*j#GlTXdjo>E=~Te+Dk zw8(6viYvQ(XG?5G?QPn2FTog#bYmDlL;CxtPJTD?h|z0UWYd#WE1ssc-?M(86+-2} z7~LQ&K=yCnppyHwKe`d7&ub%y4(i#M+-1_;bgty2Fyv5?5=V^`e&^rxS}xmcggfD~ zO?iNc6*;QrDUs7AzdlSH89OVUBey+^^|^o{ZjkV$_DG-%Lx+Q&Va04UN{qy`b37 zC1(^m

;*_aYQcL#VHhzE5VK0`^v5#!E5js8U+ai0eTJe_Zmrhk+r z?RplQcjV>mG_k=*RPjSQhlP*xw@FpAPnRWWrPM{Kfgx33!Xo<99*;T9*G=S93h<4~ zGeYFNc70IEb;l!SrUqJTqp8<2c0O3VP+kpQpyxVjDqD;y7+0%uXI(1$LS{mqyyiib z+6v!=zbDf65Omw}WwtQ*W~R?%1jbrn1f^|jQ@>q85QA+k6~oW)--8EEAu!g*8l>m5 z@NbI69B@oTzJB|PcTM0lF-W7`Ytq@Z!;CtBx9^GnjyZ@a8aA>AjYU4YB`)fjQtTsi zac~D*IYr?ZzQssu&(6u1@P?)~E=%X&m-dXG-eE*T{-L-hQ`F)94fXh6UQk;Ks|5j4%)g zSSFk_V#lQD>#sL7jD6@CA5Rh1BK_e}A==;}xT$GO_5t><>6X75MRyvIZczZcn2P`F zasE5~0uFCP0^~qCUe(5DGy+_Y3q$K+q$CY`EOKcI)kN^Q=av)V2Ul#RetD6tT~jGY z8n{%8&bB`uz-(rgLqgKg35Zfk3MtY);7v;KlLkS8b3RSFnBfhil#|pQKBK0HK3-!T#Qy=HL%{g zADC99fHZMN@Lc|Urd1_HVGV2SYVI`rdnpnar%y+0%T;PG-FDVf$PU{1N%~fW#EU-p zz|hLN_`{8z(CT}J-vx6p_ODMKU|0N8h7V({K5KCx3*v{{{xC@~zF&{mXjiLLP!Wq|Qx>@LCbpcxD(15?Rg*eUtXy&vwj? z#8s6i(1386N;QWR>tc-URu;e)fqi5Y!u^Qr6aM4_?anuDurw@k7e{dtZ>wJHfoLr) zFb>D3O?)%mY_ZN4uY^zB;2AEY`(30x(+g>+S)FWvOSgRM*)MF-ZYz`kI>mww;|GW7 zP}e{G=Xae5bymKZ0@R5`0P#ojf6agXV~^us%7yB?;_pe7&I%$_DIqkrGJ`%V)Nn+0 zGQEsY&$5a#L%uIvhE#Ly%EZ}bj_V6ZR;Q?54l`JhOA*2}#IX^_cQ1C(FecUtM4B@G;)IRcz<(+jz1$NMKH{EqQPKgkPG8~Plon~C8>nqy=<_CoX z=klGNnpKrI`W8QqY+mAJ)$dXQm=K`jEpelAAEP@gGAhqi#tRqN*W(?W8KiMnhJ$*U zGhy8)5W+BoR#)Xxx}4l)_Qo;bk}X0eS$C3?Z)i^=IA_Sk`xrZ^A(*9u|ya!8XfyoO6{blK>l>rvLPCgX3$YC#8kyg zchm6}$Ge%0RKIaF=(wcT;-hQ|%zhU|o zamHdgPddqzSvt#;gxxV)@Tm1Vp;&EIi+{yHpnRet+lT$M&}V_?F-Cd~gs@O@fR%9J zzgygeO(pcW$vDxSl~Q5~UsoObl&QJ>Vg#HyNr zqJFwgr@s2tRk=-f1v`-ziQ}&KiXexI<8BIau{Q?K@HfPhdBO|JYxg|*r6j?Gn2{nN z!%b5$m}7cQ%XLABTOo346GoRei>ixk`}VWwP(NbO#YE3JIpY{9iH<(uB;H}g=$yp9 z`y;tzFf}@ul_mB&5!hd{>YV9Y@+`DOb8<-)M}fbH4O9y;e-&=5>(BA?m>9BjY`8)} z4-Zek&n+RTxx(Z}sfDN`rAL0eZH}gJM(?{dZHI38GAwT8U$5LQ#1%or)gfJilps2C zi#FRL`UIg)W1qQB2$DA*)!1-|TegDo~MHhKh?o#mcm+(eiQu3vKl;XU<1nDs8)-dP(a2{aao z@~w_acWSs==>owwXme)9xgb;Npb__{DsW=B#gaVq^)4SHTMcz7=t`YUf%`??o&T(y z;yO!G5$@#INu&QdVmAH6a#oyp40$qMQr(5!Z8nseSC0nHwZQ?mWZQ*K%a;9PAME%m zQb-Du|*T{n{|`&E}04EI@of>Aa_(O@} zcUgmv@Kp!{ytxd+00Bw-_xw@D!pRBn=JHR}^RJ*sRqOYA%dZ&HC|HtI`x(NLFnvh> z(uPJfN;bztHa{{*5ibW!@||vD@^NW-A4y+m7v%A1-rO5Tqy)zRzG5nk$D;}XaCe21X~4V$7QT7NFmg}c0ku>-CX!0$wfpGfDV>AGcUZl z2aQb>zTpy5LO;QfI{d^+@3F4Tynau966T zFEr+n9s~>?-c}c!=eE7K*AgHA%en`D!Q>2uP}klqGr`H)U;Xa!#zT+ND_My^@>!d} z;9FO7XL=$%8tfP~B#N>gt4^mnjb6oS<7Wfq!Eay8@DOs(>VxPp({Dr6_>?9L!{dT{ z!(W+L)2og=^e_v8s<2RJH5^isT**T8jLW!Tj^EJ{GOpnUvA`t=wHzb04_!xC5mL?) z2_<6NzR({x2&Cit$d@4w97fT~6W=HkfF(Z38b@FciJKP%kdxnJ(wfIS&R>5FZI1dxsGcpfH~Eh-Ly6vk&2ksGSq|Etbi z@!Ml6gz45yZjpK*Ml6JK_73z%*iB5)K5wW{if}30>DiJ-)-N$v-BWDG5Gv2<6#_%3 z78d1`%y0*4COM1DOVm}txjMJGUbaEPMd!4EtqI+cEk&H#Yb?*o@w^7kZF|KC~^+7Bq(OJ5Y^kwCx`a;orP+g$qcxeZ!o% zvjIZ!6*r%l`7EOy)rmJ^q`kr+c*?kXjKVFrgrmnJSB_krgQIrbCc}RX0pc97lkR&$ zS-zI@3jWea9&1m_d4tY7GOu;_y{r{2Zmg_d)_veD>*_Y4itpfcQ|Qzs?;#J&yMHbe zN0@@y8c`wP(?f!9t{JII*qT)SWt{%gCwgkN(ra;^8-#;cMp59>y&3l;TY`R)%P&A2 z{rT5}Mg{DO*W&Hhkj#6?P!EHJLOe)gu>p1(S0*1p#Nws#LKR)tD3l-?L=cKBDn3Qu z^1t;We%}KNj?0aD3()(VgwubE-(Ul$;C z3qxj(JtM3+SYk~a%w(%H2r=A?rwK6koCV z-veiwLp*O|K>6hY2x*J|FQvP`V?QZ?Y$#&qp&D$Hvx1eZ>+!F#*Q8DC!0X-l<5Lj{f&Ot*+vgh_-0D(3q$K`h zWcACizsZ!{bbEd$}%2kwr;dCrFs8QKB3>&y!I@lN>)e_&Pe)vtCJkRWaZgm zK=oO1T>8YBD>L*&UkA^+5LNApTzF0OU_cfTg6`X5HTe%(@rLdfS24jrB?c8FrXHN8hS*q+^zD*>jE@S^PUo1S=iRh@@0uaciKV5z$rKN~)4n-ztO z$_NOLnGtn3&Ow3nGDdT@DqoR@-GO8!e&?K+SZVCaAN;`v#Zve{koN-3_N!XvH8e(3 z5bnVgSc9lPZt+JcJ=pU6PF`ki>6`tRb6PBE`S&-l$w8PCyX&H9PKSixM#9P=B^HH% zA{o@fs#>VFvO)-$4wF>vjXGB$-Dj7f2H6c*FE^JD=A1VAO%rxq2iBuos~B?klNQ@w z@@z=_3b^^T^aiOb;XYJpk`#f%LY&f{V#__TL(u8{1o!%F*ge~eV}onnU5s4n>l>yf zt>GL3e_bGJ|N99lh68(BW56r}4FL#9{{PaG|1%Uip{AvTDu((?Qy(G)46UETyxl4# zQuYd6CkiT$(iC`)3Vg%{Go)~3C2eAyMvyMnoqbW_g=%h2RO@J4EQ{CP}EecKan$ku4aSS*JG-h8VnYYFg&Bmmql9N=?4z;-< zM`!ejMee}#NjlgN83ATY0W}`88f+cmJkPl-CDS;f*7id?B40*KR6yzv3$2h2M!+2@ zdZ&z6HO%w`?>Sf@I3r4NQbaK?T)ZP=j{4{!XxD)nE%8mc&Var(atlbb%r* zQ=(EStM*lz1`uulZpURms2uSTgDApWs?HJE695!7iOfFD6jv4x= zafK=;F`L|)HE9EoB61Pli9>)xvUzKesQPwK zYqSx7g*ZquImhht;nO#)8SPem_{QaJNHZx5&vb@rP%~rq0!pahP^+gcz%Z~@>xu|` z=IETsNGPTKV}6lo7uB}g#6g$jkwez))A&D-zM9T8V0_x?jE#3~4=snK5GPW)gI-6} zu>2v*^^*{42&Wjj*${cQ5TlU_qW=2R=5*fa$IZen<6dXzC=ITDQQmhwjyek;1>=&?6`^CwjF{{@nkRD^fPtOuT#Ao@ zZF5QEQwe_lIuYNd4Ka(>yQ<=){29%I%>K;a+j8`sUE!Pvp6qvQAg*yZXBgoyByDwA zjQ_*hJH~gqE!)DeJGPyUZQHhOc5I_#TOHeG$96ilI<`By|K97Iv({ecp7ZYgd+&$& z<@r`~R*jl9o|>cd&hrzi;O`-wL(ux9o3i953+4*w;x`r>FC2ZQm@XqAB}>|D<1oaI(!`#^D_yN0Uak zi&#ruk~7Sz&pV}ei%CSxc69im;4$MYw}o%qovaE>qm;eJ<%A1>d0j(vsUPXz_4-SF z>$<7n4$jPbCilEN+v@3l4=6c0C-9B{)m8`#IzW_)3Rahi3C`sv^-jHe1LEB(TnIWU zgovJfBCJZpdVtmX3}R6A;dTcPS3Y^lkzu8%okKKwMUs&_;=#z97ExCBy%rg&dha|b zpK5wGk4otQaw0`-sz_^L@ep%k0GxOmFT+FK)+bak)MZ_w$=1l*Ou<%ljV(@YQ1aLx zTYuR0dIYNNMab@fadi;TDD;4d=U6(lXvh;k01E=M|AZ`OgijvQ9O$DVkb;?2SYd{g zb;KdQC0)B;T$LQIC7km!4R^(X^us#%A%xWV6CF=}1t@<%MH{-6{CCm#D&@JiC0x*o$fKp8U|1F~b@ND*&q-523gILqVZd2slb1{TyVS*OR_FWNH`?`<(5nh?d;ZYCwmQ_s{dpNbO7jKF7%dy&Ch zO?b>7IfclORScNGg34zIAMNVbHhVwCDq6r%N;PUE(eTxx3YN3bSXIWsYLRN-<11eC z#-{Hm1%C;>22S?PYh9sC1-^v3tzK3sS1z~ zN}Gg~fntw3YrS>J^xSav#OumKpet?r`b6lt(c}f6DdVqB#jIzoi(qRZcV!DO{(k5J z{clMT1nGjyPExS1&_PzQo+m7vI4^wH-S>eRldwF2ru_r(!uN z)}_jjPsnqeQx%qD#!80g(5HeKRSWbaFAno^iRTg)@_+9TN}r>iiW_L1CSD7UCnJj#U&EDz}i(82sWB(g+KzU5SAOwTXGO~!fdCU)b(oNlv!Gm z={#%}lK9`~Wa+t*bpm5cgSbde*YCJxc|Vwn31r({ZO2=>2+0dRT!7m7H9Kg2J@mM> zK^WcNh-C-eV+g+#ePf65yB|cn3ttxL<~Hy;kEX?;U^PF!>At2)mwf?CQ?} z{~i#?+1rUbnwpw;{9pb_|KDzTU20p(YhsA+@E?entP02ySt*FA~LgQqr=L z8yqvi%jrBY&kl4W3F0Z1X_i~R=KS&zJdT~rU}VN+^tl0Dv7`)5#ei`>1WONHYJnDOBwZ=*59@nj-mFY)`smh#gYwO?0=)PEf z)SZ&{I=vr5cVlmMdZldZ6b+=Mz-qwNY@O@#x05`;wbfUUX<$EhIk$a<2D>pLFR!~b= zcgznxcuYE}eVZB^w5TBla#cU69FjUb zPEV<0D+{MA`%iG&Zwh0bf4p#;V5O4 z*}Y;CF>=hW(dH{~7Wt<$c3zmJI;wIPM>2^j9s9mk&A0KPWb#8u)N`4cdQCBw-e^&> z#Y7o)B&&BgyYO^WD&C*a)l{_}c!nrjx62(Qb(;Xjo0_C`EMEj{NMWBsBiyjhMRw+fHO-Bw?jnOQKGJ<6NiytDY8PyN9iq@;Rc%Y*lbeGT)YL2jd1LnB6zF=(BcCaVT*v~qnP`ai-h`>vKje2Qmw2-yJ_?FcK%Z1a`b|-^bk7E4Q?)g}e6@U!Q0w$sW~nDB)@N z>vtr&xx+c6p(CefM0NdnI|BS!?N4z}Km>D-jJ%E~qsbgqqi@uoD%64o$<7h?w5$kF zv^)u*Z9NGRDIOYu=4&a)M$?`X_SX-k6I@0f*~D}LzRb0Yb)dBRpE}EvN$eS~6S8=i z5%t}nlp|_=tsOkFFnLA8xA<;EoE#H|z|d4Wkj(!jT@6`Wf)|G%8rO&%FBab*XOVnQ z>K72~wS&&{C#;O4J5584sCP`m@0}}t=Ovf%1m67MJ_!26rxa~7aQXhKmCu5x4!Lt{ zhtizh!Wl}Q{ygA>pq>)eNH89tr*|TCD>8MB*JzSVM;=%`NNQoX3> zMYX{!h9#pzaE$ZUU=4R8s2C$cv#G@Pe`#9#eJ9DQ=pxeq@FlzezU1Hh>-ld$(H{)T zpZ_b!LX80bEB1gwB2j_Qz&_7yT6)sj)5e2HJ_qyxCTaXwi*4TNMIT(*SlOw>zW`|s zN}q_0NQe%I6Th^!^n$6D7(CK4slRPs?elGIRVQ6|Y_*VDIhg_CBYU#qQluR2hv0GEv zw!zpN+am0_T9;)r%5Dlfc_zBss{`FFaAiN@5mXWIy%J%!PXT*ca!pE5k4Aa7N4c1_ zQ|ells5+)bv{~f7`NBfc=}!IA_aLCNF|_kEL5)OPxT!*?OKI@wx+XLM)|}Sl8U63~ z^=<*fo);feTv0Ukr73mB$S~`<4e$j>tw9+^T?F;e1tW=k9(*5y`x#0FPP$@CD*lG- zb<@D}IcJlW*)uthtoDeio0cRE_ET@J;9HVff}FQ`PP4}2m(W^|$9&h0P=?c$gX$!( z%nP?N=zSa(ZeU~f8E==aM?#qF;L_uWzDbxyn z2A7fqvHgaoB7h3=!{Rd(c;UNF9|%StK&k&52hY<<1J8Xgrfa%UnO;qv4F6Ld&Y*mdU%6#>rL|n+>K$8E^HL{R|oF zW|nAoPholcV>Pz-&n;c~+RWCH#!JrA_0W$K2t*1kW#?AcQD&9H=4x#Bjpt$F-_9MY zyrcxTBZ@B5(0O4SOColT_zUmx#EJM)F|g1}^%955k$vN+B6ZPU2O@RkIHgo-xcPGz zD``!Se8EF?@W72lu;=j6u0--9;cm%#-deGRpzOgFBDn(IBl2Dp2?T=XbR#;Gik1w> z+e@!lArwN$for;m8bA=namw#J;UKqFM_#B7R$|>iECh9-fWfSx&ds0}t|~UF5Uan5 zopXVC!$a*x7iLMPHJFm;BxrUZlNYmQnpN%;j+s}rn~KIm(R4zu%_`v#tqZnD*@$eP z3^MZ@$%v@EmvX1lU;*Xk<;V?{9IKKfk=kOJ$Y2PSl zFjZn0$)l)Fm}6)eFvb|kJ_hH-xdbsbwPB~``mUlHn2D77`wuMlukxs%k^wjq^NnU_ z$)j_)iNA(;{X&y&cxVw<%~a{RCWS>g^*uz%8u7Tzk5?G2d0VO)JT!m0BHThGW-S%;)@(}ZRGF!uAbWCaoSzB*M@3nWZdV5MRN`$P zCz92X<6DZoaT2;W+kl*6hj)~9iN*HbFUC#ZscF@x80!(V-cP~LKc19Hki09z8=N-N z*jof|@%b{1hhMYvLz=Y^X35wj1~?AsDNDy&L?V9iSi)j4xAw)a+r(qw7U z)O3br$66FG*xEk}*X%-@s+2<3@z1Qxdj%iGv7hk@>KM!{tscGL>7J0D@%9DfS=p`0 zGuBQ78Fy~sRP*(XFi$k|iMkbBsyhdFRZ%>(!uT1#f+>Skhmt%VGmDfyteFb&IPK$K z7tx-PCA1yFA5d-9U@Bu=Pwz33=n{v)PTA#-I=DrB>lp$@zYggi0#3Oe*m(icpNj~y ze8tkg{UL45zk}m@YdE-5PF2$;BCBo{t`spW=n2gAbkEk*K5~s$y^#fiBttCKhI!yw zI~v{|+wtSPpZ=9U%k`#7%B#KM_U$k4N`GhQ@9nx<`hX1m2*}V<|IZNZcSdef)wc&o z7x_(>w3bkn#YH~ULuwVqSSpb%7nZH%L_76F55(An#mIU;a>7gEf|!=G@cSEYZCp;T zjBeP1wJ<0T>dku^6QM(Q;>2$C3x(5af(uDjSZZn&$)f%0Bmxalvz~Nvn9nMK@*bw# z8;8qFqO_{T0gL2f|EBhCczp-wg#7svlllQ&1PooXcl5Wrj00A5lH&x@>1BA=(skeC93l3!_B*2^BOKG?f#SayZ#$*aEBa}I z+nBq!ZOen%J>?3`$7lzmahA`tBDCA~GguIQ*OIRpT*L>>rsMG+NEOt{;^6Gop*^lo zK2?}R+#6Bd*R7D7n+0Rmmc=L!IW7@L;w5EFgwPto|Lk$H3;RYN@r-`^N&aXR=2~Yzw2f|-Fz(WpB^UU@zdyzNlh0$+6 zQE}$da_(0+k%UM$Glo*6=_H)(UkLb4g^$r}7^87ieSVmLESYS4DARwWVlK^rr@j~p z)3er|Zk5f+9kmH>`8Cz8zxg~8$R2J8jE}x?iiG{Gy{>wB7sUjSnEL>U`QL2M{1;2z zK{dbM`I#31Du5IuL@1gTJfe}vprug>4Y4TCg2i75w&-1lO?nyGwcjjga28=ZDmQ-~ z>*FG-hmbkO?w^1o(`mW`(9HId%l{6>5ZEX%_Jw)1*w{uR zr$DpWyuCSRp;>lGs{wAK0au%OQP#NM`F2&u&}qT>a4F%Td2jk4@u4%5Z6g=~S_rC< zcecfawqgy-*7rW#(p~TetPa1^wQQT*w^3H77-@VEABvH5`A^Ixi{+*#O}R$IHUVm}O6LALPNXBK z4Mr54IeKLUCTo#WunC2YlvH310z4?XeW)Q-WYXJEuQfL2wa0p1E6#l3euGt#!i>G6DXr-I$X~jejg|+_x(LLi%M7A0gv5ecMwcVZVDXf@ZqqEKsI@G6e{#u z4pX?5awdbZD=FtuNmPp`h+dRcL$D5Ya+a9udkE6;YqP-X5BJwVf%8U7YWpk6mgsE4 z%>(%11WA77%TR`hM-3*PVM)!LRMrx>ns4U%Q+xrrnkl>U~9nAQt2sk$nI zDS^o*{5@$r?KIf;s0!bhQ)n(m>M|rX`34G6f000_4%)0ZAu59ywh8WeKSrh@sd2KW>I$jC4CM_mUq}0X#KNfUB+#*r4`>^SNHGIOQg>)ps znmBBfoSX?K_ENQ!5jCxDLv$7{_MC_cY}pp_RrG;8SmT=VV%6H3*EbcFxOcO zf=yAs6|0(98m(j!NtM$0LcJ0m7or|(c1t}Y-R}{RM?~GJtu2fKa9t5ZMj2mMBR*of z^L8#Q`tc!#L1ue^S@)YF7OJ zotpnf-~FRzPWng9Ec*B>LQ^WB7i`0MhecpJUjV2BIHJ)j1AA2YALA$20Y!7fVo=2E z=ll@aaOTd(iMYT0Gc66ioo|2A^=~^WtX|(`_IV-ItHOu+nZkrK-BGqaS zXgiG?)PPG4G;dwPA55a3T!Rc0Qz2A->Z{4q*OCUz5js_@izyBcrW`^^9ai#KF(%MS z-UOa2D2oMZDznq;@Ka_3a`B2D0YkrHcVryG2C94jsEB&K+-%%16E#oRhe z-$#L{5v6-+EiGRHheiZvhv;59z`l1v|K^GwgBSW8sde~6CBt={*kr#`cu8=^hq^>C z5t(gk-nwoW9<=M@3Y@fCZgcN;CAQmWuDG>wY5)@yMB4c3!x#horKBhn>2O6Mk_T6aN1L>SFKLtX1GjEx7`5s;7t=zy zLAaR1c0xnSI7Z%@wR3N8H%oNI*@Y!oiv*W7!p={ByI@*FVq}E_yte?b*#A8*{-?K@ z(Twmx42WP}-;L(ULQs;(0rfr_rL%WW8fY#M0T&KwMknuAJN1SPTKYxo?XVV_jvGX# z>i1A{#ZHAt0#4XYfF579CQJ4jxkFz*Q)%XxffX097S0?UZluNKcw$H)@@$kse(5*M zD^q#K*|!-DZ7k*Hx%1=|34owJlXNh`zBpI)*s$csKgVdcj8gGefK_>bMfWdR_fJOs z(}Pn99UZ91#BiH|E?NY4q+cV}jE2{1WHyicS?ebzRlvUPBlVOB#zUMs4%Fk^*w6%1 zfrO0IFRYQp1-9aH8Y&Pj%nzI$G27iS6o(Xj*xX9{@o|!eV8;j+IkbAXpUJ5naICG3 zspvPDrcxW?iEz!poua~FpHX48KT5~UY01w1FU zH2Ujs(f^cUuzosMiEv%hc6{FRutO7#dYny_cH=VU3&B}@sb7-X~?Og zvADiBGt+U3?qK=JbcbR%c0<6pxGC6VJYtD9GdPI<&OBRFd$8RaSx4K7`w6y>a8OgJ zfZ~iG7nMKLyHF~Mr(}0toI~j-_qLlb8*9o)o4Y$D0y?b4R-%5J+frny8xAl~c-bTv z{}-XjFPAPpLs(&fQ>ZoF!0d%gV|DA|bs+b@IeA;p6R;UzyG{XcP552BQIfR> zNMUy!sy{(lSk2OLI|#1QNe~i6^T(0fSn4Zs2kvP>#LDZWOfi+DzKE)3w3N4lRG@CNz z*|)a$^7vOqokXOusTNL{kDjHR2e5b&Dr?!HV44_q#1-nP@&ve*mXeZX{)9t5sZNH# zERxeB2{Up8-8>4mqg(DhxLMV2t+tR5{q@99qyl9Rt@o|l6Nm?#WwjsF?}`X)AX(?m z`eAbWGI*F_1I|;rcm(Sc?g3|qfOsgG@sWFJcT-|_^y{a?uM_j{_~v~oh-Zj0#gY2E zuJLoMU9*wcrhA3B)+U{)+R}$J-`?dno@)0*-imB^7gaHbT2mh>yZ`cV^S75r*{h4| z0gfyWaAXw!^O618p8SV%hbT?T^$B2Rp%uPTe#_sU?zJ$wHrQK12`2(nwgJIGIji+7 zu+Hpu+TQF4eEtZg>($>%1>rYV&L`NJ*Y3{W4$yj7<)Gw3;3^fKP|#r`uhXwK(xB~D z^tC~Qzj3*mSF^f!7`SvX-W!8r1x7aY>-v^hfM$ZFQV+DS+>qTKIdIMqmU`#b%sB^! zHrNK*n!~gVz}7q_lOSGpdSo z1j89ArwHr(9xvgZQ5vNtshPs3ccdBVN723Qb01=Fjs_BTW;%Z#O&B^QPp@96-{x>%@?&Sss^XU$}9#=OyJ^0w(|XQF=9UgrMxO3L&- z7~(AfRYGw|00J!dTwoASDz}blFN6)gubz!;gV<-EX>Gq8=yzGQVZ$4g%E*=tUbsc;Mo=pna(1|7r^~_)g4iu|y!T zv%yHeQYDhr4Ws>&EQ{?VHE@c_5}|bXI&4y)ap2GBd}ZwDf$fkv)9{p*L4lS&kLJUe z%7-qHB2QBt0&m**?A3`FFP#vWT!kiMn^QHOw!1(1Q>LiqscYL2V>&ewX+vyLW z{WXQ%3`}zU&9Ra}u4#{l7(>Wbv6QxQ_C%>*48s4kj;>q($7;fh`dL;$&wV4;-kcKEFDXj z@sGXi0EJ=a#DYJg8gt;Y@q8t1|0cXlkCI?@bm=D~#1}p( zGSpwF1Kr^m=0LQnu)O`5wfv!WmIuCnKr+ar24qHy&SM91`=jA$sSs_NwBy&o>Z7jW zRq1l(hNa5oVf4Mdmvx)G#)jtVoI}ldCtn&cPW+G^9FwbWzGuJRPh6Jj(6EoBJJ6Br zMzvrsC;u~OS-YY@uJ0(>c+(rQeL4IF?!gB5z3I9hpL5dPXg{={W@J6U^U>p#%hHcn6;AYl-)wJik>ta$fRw-qpZWnT~liFW1 zz@glqy#(8_OjC4D{6mL)7UXTnTu@0z4)rY-&t*DLEDZLr{LV5JQXQizP z%^*na%ndB7nZ!#4qfxd>%YJ(CV)bqE#(bpMAKQ7t4y4hS}w5JbUb!vHr z&G2~Dy=q+0e3|^BAu@hA<&>=;3?ZcZPB#vvZSfTeVlBCOrn-^DrO!?>-1XoryhhOH zZI>toMfF+l3Za> z(~1ap4C4%{^0GY7L3PZgYM``I6DAMB+$Y$4N|#dGhonZKVrih>`|yWF``El#V$?#0 zk-av24Tk1QbU;gG55JI+bhUNM7?cAx*}YoH82h4mPl?V$Tti(rk}IY_{^Adi47QG0 zw><&!P-wxN9z&=f=<#+ojR`tHk4F8t4juFdn}radZ&4n(YH{7*?hys- zc|VeNZEh#53?HTsQ$ctJWU9GxAIT~U(w3*EQVEz%??3iA?o#fGo;iJ*`H0<5b&oNx zs^4;*30#C09|^*r&BU^Z>*&lq%_X#>lpgsc~PbMHF@Q_b36x{K- z1LI=7Cw&jdyS3To*im{#^81Tl{J!pdj5&O(2KdA8i#^%@>=!cj#)i(8_I7`SlWepg zY@h%joYKm$1jFE6PP9@}rn1|?0uV`^mrUbXH^6n@zTo`=ek-+T%7-xfX}q~Nx#!UV zx@;t)aYAKW^i$oEC9!;ghf#?d-KPfN>i<`T}rEWxmK~;J)-LS z$lhQnxKY12MJ!q%>!bh1o?wrMz#ak&wFU$O>Azs`?*LGZW3=mMfD?7g4m92+f^T;| zLjI-;LaOWptZ8OLoMNG%;-7!CAx%ve;eZtWG5A>2{AH$xds<(pzqA%w+kNFye`jJx zYz&d3OhG+~jDB%k0?TYi&>PIU;1cO|V}8E_IW^JZ>qV` z?qTOABv^_e20u?=zD{nV-`ZjP$!!iC~!9{+De=)tYz1c4`YXb6pT zgI*(}qX7ZYB0|!LWjx~|bsd}{IYDn02tFVJm@m*!#H8pi8`GB;Ij`^6zaX|zLHi6# zrC1Su1{f=xrS=|;^j1&{rmk*rYZnpr85E}iRJNsEbSEmqDb=97Xb--THyfQliDFC@ zYoPg=_eky$pB--K8rz=;xjs8eNEBBkI=Ci%pjf<;gbhD$F)$fDrf$epT-_y`1ObM2 z;Jhre&_O}6H^uU_xOEyZW_c0hzx$4p=T%4H)iprph4GQ5y`tPhpN<6ENG{CC+C)l; zRE=)*%Xt;+{(}CqK>kh4g?BTk|DMa$3&7a_rF8h~j{WwoXywV6Ou!=_l52RU^=LJd z1!;t;a+UMEcOO_e+iVfh~WiHU*of5Cr;|57^aD(SBUxj1!(#Q*J z$BkOxifKX>s7J$jZ3V_T$l3VGPp@mlH#jt=Vf4yA>3Zl~6Ei~%Z^)JT3SLky%On;G zK3ma^^2r^L*7c@ux;; zc_Fc2?6QL*)%pqq9mKDLD^*yA;yCyp`-4A^Hcnic%_&DKw-LB*+@QS-Cr1@|dFONv z=gG`75!6qSLBHRaFi&mx0_(f4_uG2?8r&M&{TnfZgf|P@1c=ak!1`Y>T-n*hNYc*C z{y)Mrx(f!N+8k{D7Re8lqNTZPv1e$TECvMz2L7_{5gPdgVPY_>;R@LM^EEQ6jn48$ zz?<2_b2~p!B?F<%IV&1Q#nh0d;ggx_Zj@=ATT#@L2`Hjr5?PDLK6Hr@HFK4YKe^$P zY05%6LyTVov0BlcW>z(HS6_h=fv|YmB*t}a$+ft|+*qr^pL-~K%{SPRQodir5 zLkzz3jo=hgAuCPAZ&kPt2BUBXUeiR5T*k4ru~5C=IDI7yrf+6#xSdoB5elHc@Ec&Y z9T=;=?q2cU9(gz+?sxpUD-%J}Z^7GQCqTdc^;TYNvTv4QCo=g8uW?D zC+3A2eo6_mbb>PZq^av9v}Z2KS1g%sefi{w!zS6W+dQ297vHi;J$^=|x+vokQLBUD z^*mwY4l3h-iOfS65%o9w^Otp7nmO9wy5)XW_Ep|J)m)iF8~7<{okp^(dY4?rCsmkd znY(M$W#~cD9oDzago&O*rPfnJGbLTR`2}YJ{20-w73Mo?)}dG zB!KnLvbg_sq5dacGP({X=(iA__u%;=yk(Iz29gv-USJSEBA_Xj<)ch=R$(#hG>?zimSpCy9Ke|-BRBK}GDI{L4=*I5(02|qf2 zt)9+IHEPy|lO3 z=m5L{qivuB8Mw;7ltI69Ovr%{Y!$%Y^#T0H-^-x?)x_V<@1isru_ge=XPzT8BaEVa zR+Nh0oFrgLRO@B=2)Sij66UmBEL+>e z{p9ZU2#w#x>v&_(B^@x%_>9Y-r^BM%NvsfW)OrlSTl+|Btian_AsEelsRY-R;&>|Eq$T=D)c zT1?$a)q*vWow136+gd(gQpOH*C*DWk`&raEz&=b*Jl>l8-{0z3CWtg~3!IYvoA%QuhD)ews)}8|NL9? ze%n{=hYx^TCj-u&>2J~c=ef(8I$PMA{ORCIrVjRw&VRVKZLF*mfPN3rKU6pNMMcHX zBLtS*Tdjf#kRT+XTfcW6OOG*jJ35whWW&Jk5e`pQG=h7`Cs6UZ*IO7qT;ukq&Vth6 z${kTJ(U);xV)h`E=1YAhNV zuN9!kyIMoWe1P2BFlaa*#Tjd2XFS)?b^44WLy5XMccy3x4xLp${7xm)obD~rrCr8h zeDaFWWXrJpsjOt-Tx)*UtIW#piqv7~b}x5()Co0$gNvF2n2F(z!{N(C%iYtK4 zf;1ranU*PfCJh%a_>+);x<{?(IuGsARVgWUETCv8&>E@wj8sXTST3DxaR7?#{O-zw z9jl_Mjj_qOtsm~9u=un;NQuI+H+NQvYSY<;T@ZS^PvI$9WbjUB#v^6kz?k|F(Igy8 z?(YxNKlGC@WYORg4ivp%%aN!0)-b;x!VjXnsMruHWes&vn;2sh@u@wjM@@O%>%372 zOg0XHHmrpB-RRf5Z~+6jGU2u&fQ(+-$X0YmJ9#O~08k&b%-xv|SlrG_; zg@n=KLJebUkvNT2UBf_K5j;gz#2+RZ6mY(BvIjnB4{#+sU)S%$?iM(hW@Z6FZj0)# z-9*q#!DI&Y;*oLC6i#;Z;>#miwzMkICt*%?jIvlgJ7Q9RY$$jafKr!QyVUgM0PemM z$4V_KEbENfUd2wSLkHkxhi3?5Jv@3|$?s;{^a|k-Q3# z(24LYtq@)c-7I~bZ6e;HT%os{9f+$47bzSayme%Uj8hPUnqF7ET; zk*L(3$(9K!=ad(18j2!fi)mj`@BXGiAV5BIlm&3*0l*^uA6@#d>6|u-5gt&+i+Ukn zT%9*+kg>5142_8(!_w7uL@|9a961vb+FKEA^x}WMOvW+3fpgy@?yr2cL2334Ggiz} z2>1Jf?0%eBkCSNenthr=0+C#@3J>erOtd`eSWAaE)J-I61s&cP88^&TZXJ!|bwYCf z9nW~mBgMQZ(M<1%ue}GKZyA$Ph;n&gelBj|fej2SCfsvwkRHMB@^5l7VUI`557l>?Ncp?=C1E2;HOG`k>5ZHQk& z%8`xYsnFsi1_ClsWcCxdMqHQiqd^gRgo%cLsaE5JhxVS$p2gpP(|@(GpF*=$hV|&9 zFN$QHPP6APHDK*b%e@V&RO-t78Cf!V1xv;W+EN|RyiyI-MILHZJB`u^x+@Hl^4|52 zdBd1~aQQ)6R(ytSi&U;l*I3>@5Ckh5H`lN^dq4Kbaxnf{j_mTwhSi>$`VKEP*ihq1 zl$jbORtuR!^c%HvuUDX9;#WWQ?LIl^S&H2l^Kf3JpOO}#Re7k!4Ge{fUH01)qkeI_ z%~eqcRQY_;pu&$Btklu;jr-x=2ZlmAWp!TtwL;*lCydcIsxF0fLeR2-<)DE&{t+@y zOls?988_C02P{F`wW7-pS4F0t9p-ZNh-gT_xWAZRX)|G?_>_b=CI)D15s!0KNEZlnG#63v*cT$ru9DZ8vdM zD}dOaX}!BTULdB~^p$Jlv{7(PZEL5bPaH+@vCXMVthT4M(4edeBr0S`8jA%W4MPxT z7VvGb{BjPZ-Scsyhm#bCBzk)QC2yZF|CCz zmm>NP6Ds+@#6px-uOXT@5P2sDbn;s;oucqEoex%9t;rtkEIZ9LrWfOmTq#H=8?R@l z_b(rH+qHLwJ(2?Z=JR-nF`~di*?)3%gvVSItWJL9-Jo7O2}EPZwq^ky^8fDfRkU3g zXZTU3Jh-Z_)?~d1Eg^Gl)L$nKtGA5AHg?L4J}nIRloHF0Jvuo4BFujhL1T#{y1cF- zha;(tF9>-lA_Al`;1d^B88gf`Cz}gsdz^P`dp_u!2bH|a4^*MWmXB`o${wXAF8_#T zP*-{VJ#nxzM6RtI%HzQNJum*#49qP=`JgC-v08#|e?b}!;&PM8-29J|=EzwLC628H zU7?bj*75c1LrZE|zkO8i%5mR8&BXL3Y&4t|dQZtE&%%BmpfG6=6(}nG(X!ePZeQ$m z`gfV!fs%gf&#P{jG3cA`f069`T_rqD9@-}Z+^iX}2>vH`lQXn6{R2QmBf9|V-?#&p z2oi$EyW6`sJw|(HR#~r@%j;6gl1LUxkqC#|pic@z`HY(msjn9oe-z0?G*MOV*88H| zx02nDu837egngCh?7cX%s;?T0Qe2^N3~#n6!m<)slvxY9qG{&O7az}atV9b-(Oi+; zUxFFN<%7Q%dQvZ_u~U(QeP#Ik6^apan_2KATpu2{fc>9KxpNthpI88RTn8-t|J9=3 zL1U`e3qV9bR{^#6I+X{%h;F2o&yLQoO%0)vK5Zc@4$*7f}z3QXO_Ns>btn&61*ySdYNri)*bQBQgja zJ@*IQK3@y%YMCqId07s3A+^Vpk!Nn``#9+l?AEG6C2DYAf5x3j9prDYAbzpcBy_9D4pQ+mEvsA*RuP$ zsV)$03^v7&W?@1&D`xAuGmcDI|L5P>g^glYuw1}q&I1ncXA=cT$a~wW{ zC$q?7fJe(HX6xo#EW4ief=^I&C5T(`HorX&M&kj-R7l>CnzIg=m%heV#T88e9+^?;2=PI zk}&XdBb42-YQt%5;Rboa}ReW_Z#gKxgt~IN)=6! zqoU9d(=9=FTswb0wa}%Uc&$MjA8jOC1Ene#tp(~QwbH{ZSyY*K_``Fi<}IKdqt<9J zmqKXWe(<%LvfTIhvI3>sn%?!5K_=zClu+pL*)zvA2OTGuf)yIVMDRn7JZB}$!AyC?LI(@%H0o1zE~Ul3jv)(l-P4YrNe z;%&E4{)|MmDltK_$h9O*fCl3>(tp2%{rCO-9gRimYcT-*1fNHBxMup%KI;j&C4E}y?<%>dg1?=-G8ZGdl0M)%jW>?J4F-egH>Jyf578O$XicI(g6=ji{;s5v$Lu| z(pqUcj`B&uk&)Vz8i}bj#@@h#OL^$P`QWk~BKToS??Cx7emWd2jz*v5`b?=6BX}n{ zVDUV-xr}#KwAFVh#5;n=BXO!7ScQI|W;H=%r7nI;CBz1k#sB&B zUP|)NzV9}gpXCWTX{DeGseC1ZS`O){MZs~@o3ALxt#naY<1slH{MK%?i`d9Wce+rd z!;0>wp*4+_K!qdlnZ>R%0a{o-rq~_!Vgire;M?e=Y*0$% z*Q^>TbR7j}QZ?`*LvU5I%K=iR^O)mf*M6kLV@-wi3TudkTX2%OCq{NZ9M@O;7{7y< zIev<1wGMyyfDMeREWizijo}=SbpCU>`lm#YBx5G(Ob~<2|y-+=@2TwSoWz6DM z)QIrPEKY8L&bnQ`pzWCSuswtKynX9gWdW;`4=(bKW)?cR34AYL((dD?^+vW{R+&RZ z^F3Q=x(tv-v3fGMHH}l_GvQgd9ygy5;n*&vhMl7n`Q%0Ii$MA2VG~Ywn2e2avv@H{VQe1#@DOxM9A$hzc`e3p^g~2Q9 zJ2DsJdpx*7oqAj;B8wkMF;WfHaz%Q`&vm-4L3K|Zl=sV~xgyC=m3Zat#}Jd-IYM-r zXUv?fPJ_223--$zn(&!|T_QOl%Rhd6NgCa5`JD0{XC@TFv(CFdF(g*NOA;Ag2gw01 zdAj`Z>o`3T!9J_iacg18XBstW4aUG@E8IA8mOagOi4<=vrLbO(^NcLq8ZN^T(2|DS z&YJq!TPQIu?8Tou_FpNR5Hfw)u!?;od!I$%tv#E$^Af4?H~IZsiia+RdaiflMtdLQ z1(_X*hgVwA)}qU^v(YpnXuNh{tehQDBe)82H)zRPke^AO4c2^T6bZP_Wq33DpmirB zgo9WRbYVyni^U%$8ZT35k)sS+D->dN#ye^@P5RuzklsGff8>|oCS0Axs#^Oco;4aq2!;O9`FbbQ zcPhM`t56R0x-tKYUpZAa729>fx}^ew(uMf1tonXDI`8Ni3fPUkdaT2>{A~vfuwzeg z^-)qw2mU82DACJyKbRLN>tahO(`nAy!z=G8ZM z%P*4X_(K|zY{rLD6#Y8}!2^A8vzsNjn(60$VX190VX_BPIDhW`Wt znbCZ*zyg56F1{_)w;)i~CAFiWw6U0!loZo}l}noV$(}mNhl9}U$v(K95W+2az0hy* z6WP1(TOHY(%K(X07|3P{k9rwvlC%lZg&+Dx2j-h6JetGxJ*@WLlV()VQ=p;r8f%p- zy`nZh#z?qmY(-l>(Aq5S1Fvs?l@}kK%#{iAk!ZOu5oN%W`oMoUcF2oM_mrVnQ1MQ2 zc5;Lf!W@)NMdOjs|2nCRrnLBokr?ZNV<2txNaxKBpk2$O&Fyh>aI&q<=7CAu1ZRoT z`B&sl14M41FPO2ZfWz4bPz--3SpONh|MLO;MF}cMTVM&mbY51^Oorv2dT57BN)m+d z6Zp;KbC+-8a8rG|MIZ}&do*AAL1t`q^g}e_F6*w~aQ3W*C}w6cASF{;!6TV#+)i8B z`3iAP{U%y^OTTWTlCJQ0Fh*8|eTjj>1F^d(@Y@L$^QBqPydI@u|kRCVSuYQbYoSH6~~${Y=;$<#h!% zh_E!Yd~HgHO{j8xn+)l{`!CE>*uWO(61hgkV)h_{VwZ%<2^4DhxSI`4ZNEL%J6Lq7{@ zcy`}%aevzZ=UAorZRaTPi4(wgK=6=*incc}ZR8>qRypW~^ztck~f&gBDfth_Fe`W&UFD?M4@%+sa?47LtDiI0U zSUcEQ8Y$Z9Sy=(7q(AJEnWK$_vbC9`!e2ijX7~p<&Q!9HMFMPO7NVjuN>uG7gV4yO z8Ebmt$Gw*H6Ry|SN7)-bcUA*y<}!3H`=CKWzzgH+!87Wpr=Ec)Tp_LJa=2_g-10bZ z_W69ihUQ11f`L{5m63e83`&YN|Bj$qs~9g&E%amiUV{b!ln!=ddRthqTLM3*40K42 zv6st=u{c+TxN!xst2ihUyRVIKDFYjo5oX@xX6oD(k30CgHi}VhGJ%k7aBH52u^HBA zYWe@7P^ z|3LS+__)ra@QO-CuIJJ~!AQZ+jKf#%BCM(z9JaQuocZtNl_Ez4wyI!21Xde^j1Cjax;3@Ml!y&uJ$ZstUq+CNLxE=n#~FA@D)fc8h&waaVDO8;+$;T1o+ zefoBajiRTZz||+hGTB|o^E$(Bfm2v0isp2cWICVTD>md~mS>d5E`u&`GKb$k?SEhU zzMM?t()+g%eFuvWzXPQvVU4gIhfE`JeR=;I?Qs~d*wq1WZZ?3fX|Dg*d;edzURhHS zTLhh_6PlW<9hd+Tq`D;K3=~67pBeuLt3VjEsI@ZpF+H;dSv`{`Q#~^GQ=ZR=QmR}m zrH?Nk<^FM&-ahJP4csQr=JsRet@h(38eoltE?7Enb3lzA+twIgd!c$Yz>2KpsW(w-@7ed!}4u3M|N=hvYt#(YE@2>DN&26A8Q|eu5z8; zcpCXlt4@jZ3BpyO$q!h#DYPgD2KnzWB#Z&wOk53ieQF3__sBl(R__9`yax2Z+ zrgf1-dn|#NOabk-Qn6Dd?~sB(&d$ZPk|EJ6mQbT`cIlx#ENn9XceP*`H!$z+wM@z3$q;?cAoYC0~*dMs(e#@cXtil z*Ex}UsClM(*@7&Mntn(|twY~i)=atM*6u1azu5U?@XEcA-nN^4iS|~S{=1=*r|G4M z>eArLf%6!+{6o?B3q>4l3mVgqD#I`2Dq3@QlkJgLwCnZY6PS;Bo7HdMCyrnbwuWDU zUwQj@;l&2qciDgA)gwGXy?Gzqh2Gmd32}P;|^T;liE0(+vi1>6@RzJ;#Ny zEvjwBSN33ziFqkpp(kwU;x8yRj}T4M*FO9htWr?yIi5^lhaWTkU)PQdf~#nZN9MjeR#BE4&L%6!oBrSi(9rJw6xYTvB6d?l5kt zbR$9U-cz_1gj_n2P&+{Lchj>No}lJ_bM_kF8dWeQvo}q}W$DnmY1JK?y5+P^TvxHs z+l<)D-y>3I8*+a@NOKsx=Wf<75r zB|+8h1Xt;f_rX(_bD+Um3AKJ`Q+T7(o<{$o5Vk#8X}i^l#**xQbRaah=E@Oov<8P@ zc5aX!mDGRlGUs;P^0`jf9dbALWsj)tlQ`kDS@IRQGMUoHpn*xEK+w(P;5NV-wAIRQFaJ26 zY*?BA+01Tyu@UT$ zx6qeJZs@ys_)?f1#B6wda?Myx$oxQCeu`g6XaPg$s#7&b$_5A+!zvVmgv?Gmy}(Kb z0~N}UzM5)F=+tCneQnYBn|%#sz^r9q9jeL|h%SPu!6`E}pBn14dcUNmV^!Yy2Xfx;Py{9octE!ZEivf=)0P={MSx2K+*TCL(QIG2KPAxp zmo(Aa-JY)r;3XFF;>5gprr}&>8f;a~e7b$%)urp#V7nb!F?+oC5_6&#M41cCL5x(B zGNl6&K4U*V-7;aG1}oroC1IEREzoqOP6dxSmspu{zLw@WDL{XJ8n+i{3&_MQ6e)s_ zF7&$(pp|(iN_}?+;}s+*L8m;*Re}$SH&pRhA0skWkkK zKz|Dij~y-u4DNHaIkASpzZVb?^ak0b>kFShYCL*A<>*U1i3eev__`;YBXzK z2JDOA%?9EJa&Eo5)sC_ECga+2979_(0(*)mGWRvphR(aDr0JGJ)TF(Fk|VuW?3}Ie zo_iH^UecU|PIe?UKH_#q@gnvNj$~ zAo@xF%3^CX{ET@2WYjROU-kXR)6xkHE5@L43hUt5%D(uVLqKi0qt-Aj*B#G27JIG}oW-GwxGR z%ahXMp);)6;cp>WV5Wc}bdkpTQw-kpPpry*3FPj#)|zd3fn7#lzpjPJz{H99LS+T($czHzBcjurlFN z<8WWE7iuSGlUESd?11XHIK?N3MO9ci5g8UUBZHyYOzN3GiXY9C8}4%w)d2#ipN_pr zj!Zy?OBL82SLK2`w~h#ZacL4koOlk_8M;MAmHLqT6s*e3o~-u2aqk zx$C1%y~nl@52hi->$7ns2$G^BKO;Tw!9^7#%+Y^&nHY+=*Y`GmDVm=gN$7n9RkCVx zTP0ZP91~@9Jjecg9mDd5N0*4qZaTZD%6%8+XT#N^DYLxFB%f^h)ioX8={Bp)l|%yW z;yFU9$-32URAjN)DDPtip64~EQXrz-pO>?s+V&uSD{*ZBR(G_@aAqjt_4D6m zLjGjP$4A_5ZU8DIACM*gy^Zpp8S=lU#LUe9NQ(cfUZkK&_f-J-qi9h@wbX**M+bzJ zJ`n=07!n0yov_vm?~+=-b5m+2igyxO7&u?gPehZZ63sqq#>4c>jV=f0Y#rR}FVqG} zdIWQR>(Or(W`wF_5|B9UubZ!1rE$ha`{YK@x-hpsBHhEr7-ikc>TSDh8M(Xar@>mF z7fDB^zZ{6BmN9Oy;_|Ry_Mo!`(+Ga<-4CJ)b$&OuLx9?DX+I&&bHpe`s`{$eWaBkk zy9^vof;@AX1NRli>p)=$hUKywDL!MP@m$KhD`K^TWrXKOh^Wy_^w3{#fk<92!eVq< z&`uwY>jCYi>h^-%Lm@1nz>D+_YtJ)M;5=fOQEr1c4LhC>)u3@@lYLk|&#RVb{%uR+ zSaF75v`IvAD6Y(g5+&8qfZ-q}_kJa0R&resHQ$kom{*8Zr<^axQI8tuLKI;#% zW8c6=Lqq>nD5a!r1DKWde5_U@?&*b9Smi;dk!$ZlwZgS;+3_V6 z$)+%;sV@@qD>!=s{(QuWOFH#zphM9;4QQ{guNR7@19KF}wrqDO`vHnMhVagj+EIu_ zwM?lNw**o=MyqycaI`7mW}aD@X$tW(sw8DVl$=Ilav?PwCkRDRciFXW{LbFN>-#79 z=#T?Y!nN)UR4Xb=ypz-HZ;hbSNWDXo06%k$)4u#cG1G^7&<&r)hgoziVY#IYUmx&O zL1;y^=;Smb@~X+9F=S^lt;t^}KkTt|VwtvV>9n%C)WoFF$Tl4rrhv_&vAHNqUQK z%_PRj-ZRPFtK=xXANqa9FK6r;eh&3;VkDh)+P3>gqgXRy3>QQrQ#CX+JPim|?O@}T z{Hm!_z7{mWDo{H58r~Do(P-_ZOOZss=>XGaBr{)C5g2|UPIbt$^XuJW05kfb^ug0J zhVA2q+rR;lX#pF3uYQz3aK8M=@eW?I{yMfv|Io~YE3OazP1q+xc1y~n7FJ{}W#5Q! z;E`}w9+Hhc)E@(y5>$(%@rswBl~W3Y1TN5EMG>+`+7#w`q%2T5pNB!BLXT>hMNEab zCLc>zEY~lz?>+eNTRRTuqHP|o!yYUzs)V8U_t_5Uu9_0vi4s+__V06{`OUhqItd)t zJ0Bp=lo6?H;7#UBSMR9}DA_az*GoR(D<%{a$-}JP6G4$-quEi1}Ksx6DlryrI?Weu+S{KC5*<51<2ypJ2*o#FMk0SoYMltS9a}1hek4wm zz;NyX7OZn*Nefam^)G}Nx=inLZD-w*bbr1*f$lJ%q8E8-JDGR2(+O?Qek%-w&2YJX zKKCH$j~Yn=GC*gm_4vj}8aq|WG#O*#u+$QFA3Q8{Ol6|%o;%|?jD&HAsN@m0%H!RG z@v>_fELfPBrj$_CviuvJta9;Wi;#pyyieU2eNq)Ba?eiLX$%+6f3S~L=y;-Ju!?MB zMqLrS3(IbOw~exIIa^zvZ5YNf*s-g|s=qHM2p5I{xqYW@Y;$Hg1OrBMB(;E76&e>R zxDd9Ytt&H1UW*~rfc1re-WR!w@h&jikYBsnk&W*}{<4cgismJGT){3CF!X|43Jo$s zkA=p;rnw(tuR8S3WVoEqw8*fTb$nxvA+_2PHA;Q4Lo3uR!EgHGQ$AKNW~iAESasag z7bgB$kc(due8WuCUirvNTcUw1!Km7_k3$1cQ9qt=7^a zA+ckwp>Dn1&@(gc!bdgi0E-q_;dZPR5q5`$X0s?7HnYdbhkyjojsl5W^j_dBGG)47 zpyvv|^+W~lSYgHt8ID$WRizSSZ0UmX$3zcQY)M9N?msAZ2?1+6G8Zaf2 zfVc%>e@PvT*7c z>H`o%&HK|c7)5dnk5Jt3=aqF`IVSkX{mXeCfJ%WeEKF~$#dl{J{gs-+jju&Tx7}pdg)`#P0dbs;-5l?#!m!KO=9!Q8d*(OLTS! zKB}Vms0O0OoZUJL%D07&HgSt@{ESqTwCox`Y%4SBZi8E3Yc({_!pac;P1~(Pg>&0w zU>sdlo%D&7nTazTTxrgDi_?s14HU2cGR#8(k^D?TuiWR~hB0ZVBsE;1F5^LS+EdreN}O{c7b%X@Qm)`r1Ovl5uKi9me9d8S;}qdbp~&jDA{x zrOdkT@%z^BSnzr%FGeF}NcIW_uZRpw;*p#+e@Ge=B;U)iK-kk;gHIsKy4uPS7`q}r z4lrNFk2g<_2f3Y8Mdj(QWS)k+xX4&)SPH>qlR3Jmev-yk#14s2LMdSl&0Gn7BMjn= zXQn74>O!$4c@3hscD!UsB=nf^D1$pv3c`Zc#pG2pmOWumUtKOwhxNgcSKsK=PsvYc z>f+oNEL4t+WpS6BFz&~w_&cpPidINVA07fv5oL>zd@T5$#mEpcAM`*9>OMrUh$IR6 z4oawFx(i*FsT_1<0UNC0{W34tE32wFuWF zA`s66+3MbMx=pv2m7Xk9_}9mWC(H~DZD?tO_pB+(;ul+{?Z+ z772+sl$?8I+Xs!Qui(&TK?a=~aUgZwJI6CeHQ1S;$!G5xUGl_^+9;}l9hcrm{?K%_ zTLD9vOFTHxOyjj!!Fpe%KLiU?N9~W!pKsc~yAOnTuEIi+0xze;0#d$kP$(Y4>3R3R zpy;1`0^FJr{(~5rt%zswe692o>25nTx4aM7=r@Xdb zi;RGm6NVa^)(0*hc|Gq8xEw~w6I0)0<8Nw z+H@+QdlOZIm_W8jI`nH(6keUMCJQanq=`{vcpYPw(1P(~;YjT}Z90fB$JFvD--B__d?#gY zG8nf|ZXUO^E^(^{Q()gLT%O;KlCxuZ;4n;%X#{~oh849uck1BiPpIE{@-~TK+~`9s z?)W6jd738Xym8nd3NcVa<(X2J2!eTWbY0<|Nr!i0>3+==BWx5tt){5I9*A!{a2F}2 zoi&?o3K9JJklN6=^u5P<_CijE(~}Rct-bbInIwKDnh}o!lA0Y(!3~he8WIvbcHCq* zAyL;M2pKC)px_Q`t=ciOWD;AeSHq7WnY;WOIvmFcrxyl<&P4#Z{`Y>1e}>Ngc<29- zNGB?-DlG6L^YHlY84{*L?Lt-6`}^#kWGyQ2vN(`157G^Bo~s#Kt89D}>c zreD4ojV_>pCRriRMd!bS=^>16H945C){U4%Uvdz7D&Yg>n z>hs-9DJ4=0o6STF(3$L}{erdpNAtic39E&wHD>EmzJ}~7QwCSb?903e7BnwL@@wHTkELhrd?$Z zxfO}NNAY_Xh(N@0fm_VW&#txZXCR`PnFMkrHlR~51_23{+|LARQmbLH*-bj|NT2M| z#|1<6NLDz%@lWx<`Rv}eY{B0n&Wiu03aV-BFgFBpVZQSUe7GL42O||Ujy?3j`F%^r zk*E-_7W5qfeTDX|rYZNRw48s66-$!QT)ZL@VmOb!TIDO7nWz%XMT$KS5vQ~Tucc@f zF;d#k_QsrChkGx)*$&mN!uf1~`X%B3RthZyO?8u3ZVA_TA0Ix~V3pa0^f zTW{LVpMH_|T?2Epfe`YOhD> z*VXkkB<~1tV}C}2lxQXSL7pgm(^R@CWpn0|>E{0GktK2Zk{aB$xIhpXJRM z`JYtRqujXw7{MxdqL(sU(0E-JCsOwv>s z5+no|^7{m0I1_S)Os1EyIbKi989Sq))}CODaAE`Ia)?wREft!6*LZJ`mmYe_Lg0%y z>g*bs!{H||!RI3yjY4&x2n6o^R-FbV}s$zzF`a?iFe%}7U+@2t8IurXy) zLXs~I9VjHp?E)v7wQiz6HOCKTY*ZRbmwpw39i_Y{ILysU;4G1{l&)P=M~>El4`g#2 z)4eUfGPyDN3R`6PI10-H->K6ZNvwJmEO3b}q{k&etWFt|u4At0ho3R7pi zsdo{gL4yiSiy@s*_N-HDJJk3m=7jZXZu#Rf{o!PaZoTpG&XKR)UJRin-J( zJ6$M0ZheWpCkDxnU7`ZP*5`=u%`wF09W`|II$hSIt(^H_ z%ljmEWH)J2e+@}&*jj3XGHrZ&l=l5rEV(pxe0|Aq0MIMvo@T=YpEu5b#v$f^Rb5p% zOCNb@WRnt9K8r?U?`YCF^IfbaFx~jx<*LV%w7TQqzc%CEeJ~?1b!Ra>iv0Y8ebsgN zJz3GTLdbWXq2M@4InEfbKrwqz2m!lc=oH!ueNOIlFPHv7aJYQ4@)o!Rb8p3w>`Thm0|8TrC(=m z2H}KHFqGI?hQ06XC2|c9t2-ZBn@h>tx2BQ4j}#z~j3lOD8hozy`PV!A5unQF{&~6z z`0s!8m{4oRhbiQbqRXL>C^bCHs zx;i=Q%ocW5(#_DkSm3z6A&gUkc_1AthI5xD#$6K^7WJU?J>Py!Jxg_P-5dKOiIC4P ztVl&#)h_XZA-Kbh+O{Q7QP_`8aci5Sh{_%!=6aM3mLO?_7`=}X3)@da{OmloYpA6v zHl&{lPsU?!W@`HW=o7U0VLn>!Vv%~lDH<@7;Ys-}AB7e;)Muy?JZB;Ji5Di`hcFpL z)j2m!x{Qz;EUEPKsR&(lLUZC|hgXZKEO*k0AMNPu^XPBmNBV=46M}%GX&w--{{C(M zelC9^QV7?iCm zs3Zwa)1NJQk+iEDyl#JtWbRHtk=(w{-wDLceW5^&;1GZFLu}l^FIbjixM(CN?_>?o zEJ-Lzqm<`5cL0j@q3j@hf({BT#yiNYr z32-d0{O^K+l^u&H<^(NCVVWP11Kc z1hVu`PL<@ht?7Qe|F2y-C|Y0=0&G$Rki;xnl!k7COsR;?y|LP=kQd8dp5Z(osY& zcWl5Iaz_hZ@G zCiILqHKEHr7%-Z0o0%k02K2V_)@-oTO&F3(H5@*49wXaEn2c57I0GC~Be&de3QVxv zSFfiH9q_Ga#!`??AjYG1yAIa=eDrMo-p_^Cp!WAhh0BR*=?mdDW{Mxi911^~b&-x% zkLZ|7$Jb^E8fD9XwCC1q>Sw?UT=W1*joE~%G<(`)rOUt0{Et6}>d`Au0GxL%)c;Hx z|J&yO^O^r~1CuHOKj%5&yHwXc=}+S2>I6soK*N%F;cZI>pu*0-+1X}@>$BDpt(&P6 zd~h+zq)EF-x@`M_CzZ8LxgMlHccn7(WcPA(u$)IJ8|@RsF>rUcxB?}M{-Cnq2aJ=A zaoSWE%u5$yH!LNnF!QgA{)W(}QlhED%$?`ZxI*#&zRpfB@?_V#)dNl<&m}b?$!QVP zflA_EYczM4i+I>ht=OiOF*#*iW)^i1J`FAwkq?(x-BuYjy(Nv-ef4C5?YYkVEys z+;4Urnr922yTmd^9Z<))jpu@w=CVRDAZEj&rv znFZ0bgEbb%d8p?)$pV414}YbuPn=;>70#y3cTF`eMCEkG}PG$=6Bo zn<0Nocd_f;lNjapI5_snZI@}^>2FBuhH$7MY2W3B(J54f00*HM2wQ} zfh2}V$i1dto1+)#GGFK@K3WH(t;l^VmY^w_OL=4Ud)|AK1M?8QTZ(~)Sk=kx$m$6z zduUfAq?XSw{BzecyjOeVROv7}XJG1nT=Q<15Tb#Ys zzXd1#8qN1rMeg$Sb-#S#Ii8QEdiIV1b0|!2#8Qm>+wB zs1eG+f?8xT`2pk6mrp*8)Iux_nocgN#PRBunn$*9h3IUROJT7;r1%m}aXt&IF{#_v zzu*NFiEFd9w)|F}D=1nuUQoioTag73W~kk|yl&i&P8He_jZBvABBP@`O+|!v98#Vb z0x}SYwKl-w3bvNdpd+#+FxTkAF`Q76^WGP4D>a&I1!Hw`3zd=Pjks4<;LIk=*kaas zcQL;)TYIOf!*nqURhGW@PKoBRe>q#C$H>}%p$3Mc1J)JI z4OHdp)~y@Oj@Lr95W^1C4Ojv&FaH*d9Yzx{?|{io)0gibX|Mm*^YX{_?({IM6+?Xa zf&;)>6#psQ{r$WCak%H|RyJ6z2p`rxpL#oA!jO+tWE2`oDismY%`A2{u=Sfm@{YhS zE=&hqMXZyxC_Dr{UMFKV*u=fXX-jW&!4Ruee|PXs+Xkoc^7t0p7Dcortj_h3WAxwd z?eX;n$y60C#+VvOVyLPl2PglaDfG)*P^VDg|49`~7}^-q8tM=zQK;sxO{hk#3U=4` zZfEBW$~Ov<*c)0P1qT(Y6#*lVtln@_MrcsZo zGqM^yBz$P2TqM3>q;qz6JTK(D7bpCi1v!z&FJGPe(SH=UeI&rRl_f*c`E3;lLaK2MQ5ZTd;|_Jl{|*z`hm=vF$0RUe!% zU)A-OWAxA-Il0H-U5m(c^l))y)^WoU3Pw>5BSZu?pBQW>dA)hin1Y05-N2mGmjJh( zHD~5n%-j=6iRv*?gC(IhuEBMQZyJ(RKzzh%YNaUf-1-uCbqiQd5m`ju#<$V_Z&X_h z3N3yviFNitHkh%$-+B4OSqkiHd*a?B>?oELl528&0%ZfljrK9qE9}OkkcHofBZI)y z>32iJ>8=ieeT3pC4TkG7qUzW7&`ef+Mt4--X^ch8m*$SKW` z9l`}7{wbn*iBKs(r7~Juyj^33ZPsHGL@F;~Y|?OW;gnNGz|phNvG|qD57>_VW8cahEt z@!*WMLjaelI`)+m0W4FVBfcu}0R@A^<9aWnoO0T$q;15CxYHu)vuUD(Lf=sIt5oAs zm~KCALLhD@O=*gM=J{h@uE9i8Hk?Sm6_lvVOsCmONFSC!V4V<~CXBdI1-^10;vhQq zNV$tbJD#CeU3SosS91d2dh*u$z$f43CB*vI8oVDEqmvW$N7J*{hY28uJ!eMi7tMj$ zaOT2S4ssM3aeA#g%*o{TJHPPUR8TuPSfyUrP`|-ud?EFQ==&hfqMo%HREMv)9teBEp45T*1v3DKZJ_g*P!Jfv3FYpeBI>QrO*@wb9BdgdBefuJ79 zx(m)w!$L;Q&OjadX)-O6E!6>*t>P>-8D*-=!!C5Rl8z!dXd~{Triy)YBqAfj!ewNT zIdXS4AOaE2y9xauu2PP}${|%Crt1erkw(?QekL+=A*Y1G;t`T?okaX_|AQG#3GzX( zWwkn`tTB#NlFvg&H~jnjq5DK?EvUpLGHqc6LE=L*qI1NJR-`JPm7zct6D5?uSmff_ z2u3HuQ)^Dr;*EMOgr1|I#lpQ~|C!jZf(OD`(plH#D~FXMN?8i=3tBT%nq-_4@=+e< zhmZzh4Jua{tg&l2UYP`hq^+M*hZzL}^8hwdUX8(0UuGY8(@1*3cO>3x?n8VqP104s z$nSvoI0D;*8JV0D17l05J5#W1De?!|;IUoenxC&l1CphrwjG0wWcu$fZmie)k_1Fg z;GonAd*q8IAirG_Mwd`{Gs3QTj`}Mr`|OXSI2ZS1D+_mnW^&D z=LS^y)3}%{8P-`5!xZ@uUYZU@TxV^7`FYmaXLRfD zEV&1SJE9N^r%Z6H-hKh}C2g|asSWz28c%XUpJSoZ=b0V9^qQ!T^lWeF1Kmj> z=071^3wea*7w4%cLPp_@UN_M$Ix>f2o#OJw4j~^8Ye*XhvEu1 z>NGz0UlZE}b&Yh!qUCbmorY7%t5>ePM+;qg2PAEvyPs+U?n6IdmuX|w$AaFe!tGrp zZ$*ued%7(=%u45b8q{SP)5bqd;ab1o@^OCb;mKrj^bR#9QTU*Jw_=9l#N(^?pQb&i zO25W0g-%1$&c<1W!Y{EIy6A1vtmH-GQ!vBPJ{>tV5$+|@;tV{IsBWEaD%rBYm-HQ*9i6g+Ec-A)J zg9=;$TY2loQ%j$u1! zMP_!;rpH`g{46j87OFcn7*Ug``!bs;3E1u_dgLiNb)zZhg)kCotH1fK0_R?i+RMgvgj8z;)Wt(bnw)^`Eu+&djPIY-?@ZF|NPv> z_r>~#V$KL2Hzdkc`~|u1U6Gu*KpzY%dP@DYd!!ot^6PwWxO?9mp}dhaMb7)EPn@IG zTXo2n`Thne;dGz*VgT7Z8RGxKZ2t3*|B<_I+sxC$dsjDn_EOSK5@QZP&uNSe4Sbyg zn^W0Ym9C0X*Zt6GSxlDdc2m?$d89f_Hps{e9>ONH;>CflAPz6U>R%1C`Nem zvRKacTZ7m|3OWv=iX>fGL(C{=K9WK~qBf=hpPkwiDsW3NX7vrg@1YOFBardgh&sdj)yW0@iI-TxPVatSn4s z1UH(b2+XV$M39mg5GN9ax^a)VtvEVaX^OD|HTdkbl9p{Fh*?N>;1s;xFk24QC^*6z z&w(x)dNPteI3BL4{DJKOV5V7ICeeLeRv7AibcMUG_!2$lV}MY+lQx8;wY0?;)YDZg zXF+O5VRi-{Cxu7QeJ~+9SR59)HL9c2XW&{ZWioBkbWg6aBh&3@Y_+J`&QeTfh@sBq z%o8RNKhfVUku5KHR5eB^ZF6tQG^@Nmaj{o$1`YcKJw!&W6FKyLM)@c&7ZKDGg}Sq8 zb-R8KD~Cc9l8xUaZw_6S2!{+Ch4Ji)Z^{9nVZqS>ady@%?|Emzwm~(?^WbMebJ6RT z>7C^jBFxtFaEa>ci&Vk5#V`O?>xH4idUi2%9u0;d=~0I`r%@Ql+*y-C=`yg9Dn7QAZx;&{|))E2ytfe!9gI? zXb%(InJxqZY zB2i+$#`r~W^}2I=a8vVzwmqAh7iTgT$%a%l>Sgb4%ds+(?fs~BG9wyVI+&PH_;sIw z{TDM$s4ko?=I9PuQ*fg|);0akp>uZqR_0W`47oIMJdJ=#%;!)9t(iAL+A`o4>$ErR z)F*n7dK@Ufp83IDANk15o+q5S`5r|Pb5KA{EmySNrz^BW$Q&=5gE_FCfk!*Mn>4O? zs>w>_)Y z_$r?8Ua7@O)7Ehfxz93Nuz-I3H9?8^>5jPyL=Z_A}t+kNFUi}3v=&u3e z?_mET=l=N2Smj0vIDpUG2KdasPeuH9=C5L7X7~>g-oFf6Pv7#tROAZ(@}KZLit9y{ z&1EQWft8`T)ubRV3hZQaYaMa1?dmlo>yPr$nECz;lJrS>aB8^OiyHCJlvl@ zgZ4lagXGqYcq;rds7P#GaDyK(GvqCCbtbykn%wZe2@uA_S6Sa$bo^EA$#kvmj74o& zLUYI^a^$lQ!whMHl1K+l(mOMjZelKt9w7_LrbSR6JiqO}f5@e=DVb?P@k?-F61#Z3 zaROpFkJHXWXIf6EHW5g(G(~wiDu2PGIgb9>=Cf%8x2#^y*FJ)Lu$Rd8qr|7sYuX11&k0vNa1!2Mol(y8D;ej1 z<2~h6j1LC@o-*d!|D09$Uyt@5UQ^m;j}=h(81X@G2@wOLEbK&HG2PUrR>1E819Fb~ z5spi4PRtN17Eq9Z3H|vvbu_MW=GkCdi=wNUH^TOl>GB(n&cqHdZ|dSuS>7G|2)uV! z#~Y}1l&9R5FY}saBI}mguwrtdeNA0aO&(ZVrARRTlAtnSB|K(k?*Ad}9i!_G(|+OD zYHZuKZ97dG+je8yZfu)PW81ck22Gm0JA*Twd7haw?>Zm;Ywfka-PiTIEbuRXS)rBK zg4n_#^HfP{8Tu)&zacpeF<+3eIqZ~Pb>BO&SQ=KM(2qgIs0 zRdWi&E{Fz{E0gQu=0a~T6xsEv9G2rz)eiFUj~ndqLu7^g8riN7VSf!W!w$!x)UdX* z-=Lg#*0Hij*Fo}c*zthXTzF=&F&;z4P=F?+Idw@IQui9lPHBizrqQVa+aVn=QGCN+^?rn0E2dmp`4$n-luKctW9Q4FBh0MrhyGS(Uz@-+-n1AT36$y9)Pf%?YVeAR8FIYDq zWAYXfZ(9;>_!UlI<=tMhY)51~bQSEw|dqY2e-I7B|Mj_^C75Pc`cFQ;f~ zE{)3RGe>Xc9tmmF6nT_uA&n2kns~c&(FBIO*cYbCqjNn&iJvblNe8KLm&k z>j_;0OR4W&YTeLL+ z-xbvUZGTBj;h~j>A1}mo3X$m@@oVm(H)1dP9mmo|;YH;|U9nTJOtp`m0pd-8UI>aNAy; zB&kQx;hDlAL+B^QdgqQ?7P7px%}7~4Qw->RYmY&sP&Hi=BOXLkHZ&Qt@Tx8ynWwn< z!m5i*Txb9|7A5m=n$;)fWw*B$EH>(G)_ip*o+g~^#iLw-lH5sMK2ZoX39rxXyhz@J zH_ZHoGaT0jukn;T!aG{~h>U5(i%So15k5@HS*AszK5uU~svYzb>yb&H_}ht5RgWd9 zY}{pYeJa1lfFLRai!O(tZm7O8dYjsTK$-t**W>?D9gvCqGaEElc%E%<6+ix*I%Ze0IhzQwn>XO6JhiJ`lJHL9j0mp|{oeEvqBEZb zY-z37g=u}-9G17pIqh`Z375!chqKAlT;?E1Qg+pK_z+aR#DQ`ReO64O)}KY&%ef(m zCwV)N4DaA%_DA@gUrB5#)7;K1$hOib)?#4|q(4{Q)n>&8EDoeW$C*s>ycw*5+akXj zCNoK8Ff$0n&L*~S*t>yV%`SM)2_U{*9{5)fPNu(?<=?nJ+>Vj%c_mwiKaDWk0@_qq zsIoOZ&{w}4r7yAF^JUpe-+T4orCiSu^V%fMzeHker4+#xJ2c^adxh^37YNnX!nNU_ zTG%Z;gC!d{UUF&i`-*!ytCw5&0D2;%p)y!~B@orGRoa&>d$LqANWuMmbUu1IZ_Mwi2hyN`De!p-Z)^nDkEy}PM3niy0c(- zB&-7y0(t!nNXrEpwv5arojCe8-CozX{V@wyH4{GqTMup0dy$?^Jp1Z1*wypRJmc1^ z2r!;h+V&M&s0b-X23Est5)TL;O40gwCW@&5W=5E?(%~AqRf$kD`>dqcGdVTgXbbCy zv4!>S3R%=VlV|FkKilIpDO!+V4Uvw!UVNemX`F{dK z$aNJrrOi+=({BK0c!nCJimMcd)W6=7dbv)yae1x2Jw0FW_+`3JPG5QItR!T9Wk}B4 zK+Ex_x%(`&G*Ug1VDF}i8F|!tzN5*Id0EX z%!FlF-)O@!erVZKSP*n%-$A4r2~>h{%6{DSAW(QK`*$u6Nt+&yRofd^tN5!KKcTMxqFp9m?WdLUmC0- zoEls`V-W_lHt=iQz=zH&1oOR$Kz_Sdnbjp1-a&v+xt%tUO*HOD$?s3yj3&W;jxcfb)iAvTA^wmfg zlrDxa`Ce63^eldlL#5j$BVQK5^hS~=t>DHU&ugk*Sl=Q(?+CPHR#5g(K-ihsI5fl25JVwI9VZ^3Cb_SCw# zPcj-e_cse2vAcAg!150)XP~z=E$3f?(9S!!+4aY|?}C01-Do~zuB8^2_nT~tGguy2%6NyqO;m7M! zP`^&RZ<)i|g{=Bk$hjjC-6gopz2=1cg4FUgkUcPv$QkXLe}D(AE;7&U4oU?Fvb7}^ z%k^`PR=nA+keHtS*O;8UBoEE_R!r$iBLUB_XKw673RZ1Y3~ZL)tweJSl#}f4B6nZg z@`{W&?n8E2-o0P{Wkihyx(e1E;3piy{?FT2|EmCg*q8zJExT1fqD5l&YikR55XjmX z{&KN}05wsv`swn6^)AVcwrz`PmOqjZXHJ+8lOPPrzvZowxSfKrlFc)Cb*F#%e> z2kE2FI8hNKvo;ByoI@c|bkh2gi|l{&h;Vm>D*SSuF@k4!Qd5=5<-lu@{#eYD+5S!o#s}Jqa-H3QU{qn^ zF`u4Kbkq}!P0e2HS9IWLNa6RpbmK)3y;No6-VyHL^kxLC*tj%CEI(llB*qnk77JVZLDgMi>SJp*;Zc%ovUMf zK^I(%ssX?{5DKKEIOXL}>t8|q3i`9SaKQrex&qSnFN_egm`itYna|^lJ0>2w`-O08BZl0LdfxSM7Zr(ggYWX8+`*q4;tK zJk4%v8yhf-YcAVI24Rn!^A@BMVh_7u?S66Thu$)0rjagk+|+NyX#F z3?0Tu(`KqxM>qebiH(O02X*&;QJ?)uyt@yQNXNPZx30&1OpRce<3wl)ms7^6_kR0Q zFEd)zR5T2!0BrysNGg-jmbdr%k0*ZEdqg*&on3%Gh!1FD{MVexe}3X$T*1UO%k>Xe z@HeUm%z$1%HhGe;o0aye9%}u5e%_;zg*8n@Ak9bzJkix=e3wo=k%i&46w5Ex(68lU zfQH7?5S^NKeqnkTP63`5AS()XYHp-S@tO=KZi0j}ml_bbO&5Il>k=U;KOI$U963g9 zDSSf(q>)UZ>TKUdf$AM)=z4$YVpT2n++}@C4dK_vccD2kIpy`m+9 zlaMiYWr`uL99|PwZqU0&F(n8ybGbS<=C3ba&JJyTKp;(r!`e+nD=zG4V|`^3wN&M= zT#LpVDDROy?&+iU18VN*&4}lv#x?$jM>S-F*`A-;TxC1m)6JI=>2s>L%cX6~HP9Yw z-ddLDoy<1TED#b#$(lG%Tgx-Br=^Q2;Qd*s#S7IHC8rt zOlhx77`$zs&$U_FO7^R`Qy#EEs;w*Ru|`F!gA{)-AS=@UfqL75X*5jcem z*hVx*WcR$3LK2dsDxJS$$2(he)<}@+>Hf>LXJj*xT)m+7P@lWaNx-F)FIxoPfU50< zTN?*>wN}s7crq(nr>D48PqY8cl^h~(+?p$dCs2G00^KE;{P1K z{I^2*Cs{vaaYIAtFYDbNYdBjGn*voGRZu~Zhve$cdjzxL((3r;W~B`2;z6WVq#|D* zH4`QiKEQUlwBvVKE2|GC-SmQ4P-Pz9s4JWw#fbN!ou>AfmJ-URV z;ZKbt1?9Rl+IjKmvO$U3y7!*-=c3?~t7m5LlOEGXAM%abhI zSWJsmymOO+K$TKFZ7c#8gsICMfACn~aWvogMVM-8s#v>UtRB~pJkgC#dHB5HEI|-a z1vjPs4ibN)FnT*}=SSiG4UKs3a0S_!t^!pDVJA^w&@XVl{o5YXL>n;#L-%-(1$DLo zSWXk_Zas)4hj5(&b#bE{Y|Y|JZ==Kb3ZO7yV|3d}vGocXum4F+7a2ks_=;=++IZFZ z7(!YvIN1*48`;l1 zSnsvF^pG}YkG~y}@mEp5L9~{GYn*8#ot{L8?y+au2JU>r6|!W=5L&`)`a)(Pc-{>< z<8|K@hx9%)2VHwUM-vQQU&!8X?hca@2MyJ^3T9g5!fRV=eMk7}ed6^T&(3+LIy=}D zC_K+5wG&6*?)W}=x}0>K!l_3YUX?A!(z+Bak=SFAYBX0wyYzZ>=<3zoGrF9_RV3G6 zDEMn2*{!zP?p_ur%XR=d8DDHh=tsA1;}&Uy-vtwyM*-5M+(^okcp}AR^;|jOI}x+H z;rRO?6?@SqL-k82n>pTvFC=Q z?2?Yx&pS#BsfM?X9Qk>;!l`GSs}rtV92@1<8Ki@qt@K@^72xpDZXk_$NwW2fq3eZ{ z&8GiI9j81cp8TzwBwpj9Qfz!j6O>U~tXW^qn4AOxPUN|aa?+m3I!I`PvLKCJMQuqy zSs6_w_oL3r3+rg;!Fg+Djh=W*U z7>87B<@~KbQGX)702E6W%@|%Og4JIphRj7a*l-7d=B!{eBl*+q1gHW+9xC1x~(jc zy3BXWVcwMZb^{*FMj~DDPJj`ak_~Gv&=uPKN5!<>UX)u1gT<``p!ksh1_1AG2EfkH z5^%QD$-;?2;qSlxn&GpFk%0kRat(PeYf^*FugDRcj^+|{g9%VP?nUWGmXVgq4fo{u z%PGUMDe6hnkoOy=)Uy*fKO*A(cKWo<6k%u*_%S^VDB>t--|foX@>ZNS_!%O&tvruC z6k@U%D-&9cHbU9rlal7jR;Cf!-{53H4n*e#CS)z`ldeGn-ItG{^=clytEiCp*7x5h z2c*@B3Ei(}qK;5Ng8bI_?z49jqGK-M|6$@@fn?d0hyx2hR%c>Zs=cbB9eF7@?I>K_dvw1+5utA7xNhVuvS7CLGwmr1>^k^SK zOoG8akfjdb$Pp4PI|{Whuyj#{xBC3i5R$_bKg^rB>spGuh^3Z>Znw?A=WSo0E`(Pg zap+&P*9u9qqQ&Ec?)*6`_NYb2EW_XQ0}wuW6_DtU?LIP=C%K^vqiW!ZIWp39b#7M| zC57bi%kDh(4!6bPBaU(utCdWC=AIH8LzX~+G&pnG`1YwaNpI_oQHkQv?{%1(!{l={ zxcU~++`u(0&nCPi6`Q6`mT--%XJPpkpGBbUiu`fnDi}^6jbJ!#EFlLHnGEMFG`%Q< z4vqNo5v-_6}dubyZu+D&3n=x7uW=_Z|a=qzWe zcjsS?1ZqyJs^9)tk@^8jKWjRq5dgbj0Vy7$f6p>u1E;?^=73EFPIKa@d{#We%hH78 zq^Oceg-C0T_I~{46Ev=%(410h(}Ez4x|z`=;_-Ybs@kT%M4rIC<;)^js90>eO+p9; z?yE_==j4BzG_}V%P33gCZGC;(QvlN9HRDvN(x_jUg*AW%OcPX0=;o{m0~>L^1-$n+ zkhf6hG@MgHvBSIK>t8$%I0hD)hW*Vf20Bn?4|VG_-<=`&5E zeGBy!Wz4#tlkZ3B!R!le&X6glqF&Fc(OAbb;DQxM6`NoxPYG}cQMuDjj8Q*aj4DVD zGHoly8lVbE95KWR#l%)8J6htx>jRrC4ck3dBIX`pTwSz|Ut2583~*vH$5iyIr zcg?{@=~~S+^ZrcLM>C|(xV#&)&%K83%GM^lJ-`@_%461Cj1xR@jdV7g9%?F0C69ze zEWOCC=4*A8)H4bQw0bd`A384cOz@2efRW4r1%L6*WK4IzFWYT1=uyvJ)rvQ z+{$8({lWeXp7@-ucnzFQph-;;5oUB_s8v#_{@#KbW_;QrVP8S1QeHtF!eU&Rc0yaQ zNce{N@sOvm^fULyj{}Hmwrh`FSnb(vqjHnHZzrIlC~X{=((6e?EfyB~zAa+%KYKtN z6NW!cF-utC2dAVFDWtn=+ih?1N5FOP1q|vOMH*qz_~-I###}~+Favqvg=t-%L`#kW zHVg_cC!?3!+YsOoy+#)uj02Oey&V(_G{l-2@Q$88gnc%TrvxJ{9=YT5g%ZulUxT=u zX_s_(9C`5zqT8hwn=(q?9mCJR{bQp8O@|!270$|@4?qvt1BP=5|1WyrFX~%O7tqav z>hrDf-Chk}vW42KBx5;EP&VuW7;H-3b1tLJ)tKjux$%ASrv!3nA(T)Ndzp{VCEt;6 ztLXvg8Zl+pgxU=#8Mf_W2}KEo_ZJ$Q9Y`-@52LnW0p^C6@zbB7j z!)P!3@Rx62!1EH-pDABFjkjxE=SG1)B{T>`vkD5{q*-T#mc;}I_hbNtU;hzel~1&~ zZuk6+W^p-t_WD!N;kDY{cce-e9gGqR7ZoTy@yACz2?EY|j8+MYMEIwZCtx6@pcod` z5MB(rWjq4w(7SO*GQ1^a5+9u|m25StPVn*&kVze7}EYy(c8|jPIZ{+e338 z_<(Pvna90N=F9P_WP>GvZ3#$q8T%9Na`6y zrlXHZf!a`Fb|o#_60C^82kRB*Y%)sSHp|ssr)P?$=Kxgp<#vFSziU489n}szSQ(_O zrX2{G%VQxDIyIFLhbTd}rbQhx&fQOk$bPK9X_LMBa!VjtvtxA%eJK!xEU~5vc7uq{ z&{Wtli$AMb=CBijRuo&9gg^cE4+~N@S0SYkfk+^NNK1!Cy>2IAz$k#n z;3$SG-4!qXDVA<7cjMc#V`1-V68wTDN@$>r`h4wVnOC-GW@o?`!5c z;ND*i)vp?buPSIU52<aSTA+xkoBr1G}3a_JE7=if6#Sa(wx!;KxrC(w^R5i`_FB7vor@ zF4ZwT#qbZW>%)XM0}JHI0g}W{fGGIyRhs|BuM~4PGO>5Iu(SQEgBh$WXEz5(BxG_r z>|(AS7QmlC=1sGHAq59XRX>>Sr2-MHASUAEyiDLG1xRx68*+cJ)f6~1HNxk3q*t8D zu$$GSB+_1*ix@N4%{32}EnlBEklYv^IFB*gr7HE%%yp)$Uws0LT}#|o9U&&8`fzPA zuB8hd87tKS_-WNMdm=ZCee33W6EX&2&JSNU%^7P;;AY_aSl8u3Wb2+W?1!4*8@lvX zKg^{+Sg?>IB3!6J+jI9(6-$tpd?pbW%t#y_`6^#+m4868#$p-2+^UoFTY5; zCbpPbys)+qG8UTBFyPwc5YnUc+AIWuS*g4}-kF*MG*__Tp%m=~iowh+ZOx9|K-s8HM+H>~8>lJ@t6){JIAxfR(hZ zg|A{BW)U1gMd+_Ko-4}hfjnuZjp9I<+36WEOLb~d+2sML#T|nB=64>B)IvmhTdTHe z7s(;&`-e~Y5eA^Dnib9g!T z!8`?ZGJ^SIFY2nI>7b=t4W-|_BoYEaEtZ2|zGa;87}s|8gaAf0k9Q>_vYb19T6V44 zvY(+@Z=Y6^?iHzT>r~jGp`yIH52IcW^i_%N0WE+jbH$FzL_Oatj#z9pQP}$B5X{mM z#nH>xfu{b<%J0#{mhv!nNGgZsA^TMielo|p;-YAwxcacncZ#Z?rl@2E`-P#qr>#|A z743di85h|X#<@NyCkwXmUFlA}fBoqxEYObYHa#iXzIGl1PoAhzw`N??dA9>{BxLf2u!f#ZnSDIRc#OS9$yTHcbqo`oLI$B-c&zF%QC9ZkWgcc0T{6u6THF}BszVMa$hx$m?xZT0kpiIzygT6^{LC^M_r#h!T z5eUwhx0mV`AnJGe^$qECfxgRMMVhwxH>Aw>w?AeJKh)IH)4l=`Kuu)>P(kwVQ6Xt! zZU2ATvJTIkp28BMX=j6OR=e+PeE?r#-0GUr?rs&pGv}LR8KyBSNJ!~z= z7<@&|0U2cU8WnJuIF#pjwSj;k$3zd2ZZSp^$?JM7_n2nY9@N=8<`R)oKr)vU?QZs1 z_AGAMWJScP??^EMSHL7MZ`$K6&MlWD8Hz*L)Zy=wMrO7Q`oSgPZOi5R15bsqQsd_v z^n=aiOLPXmcdCLhBHqX~^;kFS z8M~5{<(LCYz|Mf8k!pLBiIvkgTD zj?`Fo_X(eXMXgaRQ2Pync0z|^@0gK)Z%>0d^7==D`zh-HcYuL%24 zIumMZmVmVqJ{(U35Wf`1P@h4w&>s!Mq{E4%q3??-3*);UEH%!nt+V33URA0`6j2f} z`Itx35nW`pWwEf(Yqc9$ffX&~NjFo@*s~DC4wC34N$V`v^TD>k7|mxv`wk)dZ`|QC z?$2tH)0wHC*o)Pu;JD~5{8(}3#_vJ(#ST)71f%x{*3!=D^~V!wWmKnWdqdUAHF_rm z6yL$4%cxatmbka_;JaRe3h+FBka|n}p(c2Q7@eK!$FI_Q5Kz8&tX~V zExfcMi8KhT?X$>e(2q)&*-Z?xxk`J|&5fR=4C&dUdDJKK(iwH_UbKO`A*!GHm+{dv z|3%Ds;HXYfTJh1^QAxNkxLHkDXPWt7-7u+s- z$;A18uE=*a)|`>N_2>R!L!qsyNEz+tF{u(W>&lBE-lW6LO;>o$$?-vHHYmrRq>iNgB$Q=hTm10@osn?b|w%~(meSY z!G0Whqzk_%A6Yf^vq19Uih;a+-$T~h4g@h~zjk$MDDe{__?anBBd193-0SypQlIxf zHhg`kP?Ul%S<(Q*Y7GE6#lHu*3ZSBDU~S>~cQu+EHz5zGr3O!d7b*&Zy~kCD;n*9v z>d|I$B@(tElq#ilz>n!KAS|3pD#>>euHQUH zlJ_m>r9_IyZWd=lAakI!+s=Js7P3t zp9cf|GWjjl?$*AmBG%`%`^P13T_p+!bh;F!PQE}A*eP?vfq=c1>+5%Wo`5;e>draX zykknh#_vHstbV+P3x$C1oyygs@X+L^6u`6ZflIoZ*~BAgaRTll555uWsAmifWf7N? zY^ZfTTYSE9>OVSgrCH>u4nH$X0J8r>8HQ&#jVu^Oan;Rj5(05*F?Fpf*&d7E|6qp+ zggiT*LpV1JfE^KlxcNUg-hZ&;L+4b*_t^F_!i8KV|3cswW=n?L4rs<3w19j7v1PPr zW-UXOh?4UGoTC6ik(4!8Qj>9b+xm8aumHITHn~((0XY3LZIEN;QM@+k@s>>q>SbK+ zb`a4iUeMiGmCDYjy*NBsgYdl1NE5*u2%;y!6;_g$LQ7(0Mg$QL$^o_oTW|rnZhtYh zpXv)6wa$siVB8hLpbWOU=g=vcJkdl@g<2wF&`FD5 zbwv-dh#Dn=UeNFCX9+Y&xBf^~d`JN{^5mKTfb0qYDIok0Qs8X-w`SRYhJP83+jhXI z`XAue2NAK%Yzz#KJ%|uRA@~u>yy=h36dx>SdN|4T=-qO0w6q2Zgn^KUE>6O6u3$`P zgx2vmR$dT_9=2V1QzJ@CR|uWFAn8P$15V_X2U5fUed1XlWBz8^&yB1dqxTtM9ik51 zUtKs^W(g}KA__rqG4`C>CI!WF+MGQhFmOPgHl`!x}mv`^tQYR3e)CEl@%Sf}V z4lzp__c>Y4U;Q4?O+lC!=&c$9DsM1DlUI2gZvIH|rvorg@zm5#2_XJw0Okq)Gx7i8 z)dRrZM+hef=yyfrC!b036=axc?(;m&djSq@g{JX`ifXq!?T(!;o@kU)(Fm$FzP5eC-*kG2M6@3V-dvz&rwvI0Yw4B?juQFMt3=i5)K5Mp70!l|9iz--P zDfv09Br*j(JY_oDG1~>o%2&45jb(_3-__kQThJ|-pR}cbh4Y*= zG6lgs&1NTPpTp>vqaJ|l+XXSfdFRl(43WsgG#LU0H-4Et5Dzx&t<#T5poH~3`&$=V zAa+mJ^L`oZ8@jqJxeK^t59!*cM;$QdRe%SJuqAz$OlDE$+Elp4^>s!uiCFMMe<74n z@RzAweM5nxmn?^{j0l;3eco+iictLGx%B{wxYR!OCFmLYpCkI82VUPG0YqK{d`$m? z$bc*M&IY#576#6CjtufH*49#g{P8!)D~`$cF(PHj%@r3G(G__EwWOp90QG}ILsL;h zDqhLgM$j0^goAd2Q;-676A=V2lXD5i$Hg6JS-6_5YsO7=t z+3Xbk)b>n`^spFT;2;M1Bu?{88659QRjrls4Co8EAz=TxtWdyiU^n+>d?9U;~T#ZZYSv@5T`h`|__F&%sTCbP80)h3qn z7uZmJqB?901j@-Avfg{6yeg@yl;USkY$Gn2 zXK8jNhV4rx|=y0j7f#@X;1F&t#0m1G0l$lK9)an>bjlGGIvw+F@(HNj`Ox z$x=HTT+X+nh>n#*&ZIJ|l}-jbf~wi)e~H4(YQaiE0FUnie1Gp@|3|XupP=aI|oQKZbjUe+>RWFl4d^k|Kvt|HBl2@b;{pRj?WGBt8Id|9;>2 zzkk*TcYWfR|6D((p3(1X%_<5F8lSP6bG!DQ5ZsA|TTDUu+by{rE5ta5htnU#7P~&4` z;=iH7-<=YJkBs1-JpMEO&Q{U+xc~cBoYY)7Al!!0@0h5UTeORI9f2fg=~GJ7(_(_P zN;D?l(7~45-T!5q#*$bR*@N^(;z?zmr6U@3wZETzVs3VK(Zf~jO3h35-yq5Gr zTF>^vF_Ncu1a{29WelyI=E6IDO_*bVX9I24b0*1Sass=hPalr2E)lyMTu-$N9aE?(D4AA7ENna0)HXsdOu3(q2}RD8nWGH2A$E8jaFyy%``YOq!#bl^Ih05l%MHMc;5POb z8_b>_ekoss4LRsuDCiODHP}cU35?WUt8U4A0*#b!H{0SY1Qr=fk<(dB@W?eMvTYou zoQVonL$0q*^@|DgY1zBIt%cT-|NNGv6pViyi)Lh_n79+4m(TccBtdjY} zN-)*@Vhh0Sd-5=m@@$%ViurQZp{YMzipJ2kcZ^nzoocIwF(5~4nbt=K4^GBd`$a#k zbG;T_Ys`{@sb7Z(t9=wQMdzTJarnA?{m}9otFx0x$)M7l-irp2Ix0HD!eevmMwq#Y zRtx-hdf6E0j7Y)_vqco82FMVTQU%Da8Th=T2)8vXAOFemPu1S}sX+MCET@nb7sWq` zehce~7W7txu|;g5X!h+XrIUOpP!CI~fjHOUTEQdtLC^}=1(fTRFAIy|V+G}tG4PL+m&`K*J$?FvL zYH$Mi%+9;`m3rJA>k<8a}VDkn)x^ux^(3{Gl&FGXL%F9e(UAMPK z$@r&F^&&n+3#nIT-qA_gau+d^$p^t>4!8$vVKo-TYU3&nGs5QZDbP?sTpMgPMHFq@ z+kPr0S$JfXpDAN%Z);8>@)FCY86wU41t(B#b4Pru6=m#(f72bf1!+CIiD;B0(d-6Y zF?cO$>uExOLUzO)+OJx{nH8tbZ+xE(Z~v`xt%pKd^RxU+1aH`&z%c1NJ-$!eAj947 z1u%_8sElag;ftaA)QStzdDStZU-+NRF31uprx~+<>_Bg_pfK2Nj-r|Y5A}F}#@=gN zo^ZBr+tDMx;hoPMd!<-dzkJo`y!{hzA2CXVPs^qZz!vEOFvs_w@n&e?WMRZ0WMpLG zUX0nky zp?+-!oxj~v0QohEvje7z5{BHE+{5m0!dP!BCkNP`mc?4^#!uo+F?iIx&&3@16S+32 z(zuU7wNWEMX&-bw)L`vzGe-tuT6`(t@1_b&jlSxexDhx#ipvXm@(-BUHVk6! zguTF5;Js;=o?Ak|VmRoj8Fd|CJYyS zgk2zDIydlqv7c9pcBU%_S|d&Z4M8psI5kZ@CG+bay`%Er^6ahqvC)J8F3AJ9#QXoi zrN8(OibA#^OmLk?XqPrZWV}FX)VuvVWMo%h}RMFsw zOV&hYL-7>Zxgbh3Bii*Kfwk#6hsMFgB)2yA$V+fFbQ1gRTQ|sbomA_QC*Q^ezNEyj zlp38F0w{`F(QQvpji;2d7Tp*RpF|P`qYjv`IDRC%AY0gy61#>FEJ{hFMTTkIACs_h zDAHdYR-oXa8V=1f6`91FbG%I&^m)h7cVHO7DBk+XX#LOy?+VM>TC-dia)vT%!6Qu8T~ymF6%P&_tEpzHO9R9>D#>QwA-OW#>MU z+&2J7emo$J@n7lZe}}&h(a%nh`-rxKAGrq3C8_uE35A8JX*KH%LN%kZEp~TTd*M`tj*a*BqIcwXQSU(8J~@T9H?%Ra$ zb5$O@O4+s*a>c<}?0Y1*6b57lr2IP{1aa#)N@~gqG`pyzv~)0%!q{{QZ72;UVB{9a zylbyjSWQ|gl2&5n*sYK13%twq_ab6P1M~C8BVX$i4}LghB@_XrsO>W8AJ39r@034W z2T>2=9XQ|6>Md{Y3jF%(-E2D7ggP->y#=@?3_@8~-Gv!DW_7f99gb|UEgn#B<9|+p zeT}vs_Wh&G^PxM!dB^FB0K6jv@b16T9r7k_f7KaA|C@3B+v<`zbt9t%cFQX5D-3I~ zJ8J6hVF5_@LR3$!(UH~tq6zLVG~f)mxmUhPoNMaZHHgT}>Deq^lPfEo-}(4KYnfy; zVR}V)O7UgBh*Q@m6AbjmCWi%1S4T*;Jv4VNm#gWvEd*c_3O{IO!LFga<#qMp+FBDz zX+8xuY(AuyMk~IGnJB>`Dc>xVk?v;|Z?;q9n+H#SFZV{P`Sk1XdtMO?5tl}}u|Ba8 zad0&pcbq(lKfau2A#rd0-PWgC&yua6#^8iI7vlB#wMv`M?YFGz{&u8D-Q%dP@vf~-MsB|(Z?B6|3`yzP+;aDP zX?XR!ynV&1=V;2Iih1S^z`YWqn}Z9onCyt(PcwPIU81eN)x^$18@!jV@Qys^3#rbg zKz%$SV0`Gs^XuV#MvrC{*gIDI)$bT6A?VW5*=qTY>j;bk28H7wgW78rZ40 zHkmum6zSImN2=O>E158811jc2-By}sP=MFGJ5!EXRN%8?UXIS}l9_gjU{^@{5VD49 zqiTnxyQNuh2X&z$aqI$U2xR38)EVITRDNS&q-m=5hEM#7exrC+8WrEU+5c!{@N?J> zA&(<&js7(qm>+$b!az{8!^oXI?R8#3yXsilR|wTa?|6Gm^b(mkuHctXNeM$-Rqj12 z2XYrX_7QV1{XX`f$FI$2N=~%h4kc)3&D?yDFw>O0Rz;T|NYH zq3LUDFa!|LI$%0g;lDBBf6pk{yEv;jJDM2S{AtQbKdz(w_3yvBy;bU3Iw%^LzM-;E z@)F>zi|`H=!L^09t$vzF)8=4gz|pPnBYp)2y_k43u90)Buus<%~wj1a3Ka?JhGQ*%DCR=~1u0YLU46w)tC% zs94Ipk&)fB-2>eJlR@#%0SJ^45K_o&1oWw z8OEK0B762+$e>+jv!;^`xI94|X!CMZ?Ngqnsb|<`kT7~!ny~IlpI6^kmuKCO$=%5kNelEroU9IM9BALI(I4s)Rcvw59$ z5*5_$P^dGsW{w2SdYT6613^7qs2>7HV(rrSbXf)5iHM|D7O|2Ov+&(CI;QRW5jS{) zNrF}%e(XbgwYg?yfQLfx_-g%7hY76ka;ZTgrH?6AKxV3XUN#U`Tb6|xDr+hXgOi<| zx6r*pHu15#A(O3V$AtGLrrFRTd*`vp8NIVrTC7dwn3H!|j2_W?5I^`%>INO~ zR-OSUX(kjhPJS-`+iGjEd?F=yGAB%J|W<~qKswT1S%RrH+;N!l!GL;{S3 z9#xtSCrt^wIC@GPuMVJ9K!lIm!Bkt88qKu3p|;I^<2d0(C}lXVPeW}LX*$szL@t;0 zTL_MLqeh+BLRCk!ug-mHU;0^|9WuEv6E{F?wC736BBn!_M6B0Dd*&LcD&968#Cc=I`CQ|kIaCA&G(Y*J>A@kSXnL$kx0#2%H8jj~-yQAagGb(*EL+jjYF$|-Ax zCCwSvs$Z$P4w=+Th_2(wAZOTezD$;2O9==y0A~W{HvBwZw3e8Io1$M@F%jwu$^&u* zp~HC0UFJ%e^hB%5-ilsUTa<>Cwk;oI$#a%Mr-ZCCMvgXONLPvreTAVHPc?Tjda2*0 zV>)md(Vm0<6hi)P=RFt9D8`;F-_>*xM=)7>S)+`w&NZR7$-DP~a5mgFr2SO` ze>M~BBAY{J-S0A4<}iIFD-!gQkdn7AZq2+ik5kZ!hkXP;Py;$tAv_q?am`!Ax%_15q3mLEHbWB#U7B+!&`-3(Z^Th zp>D9zquJ@it0g9yhGDs^kbn%DJHlVh>}g66o45J*Jc=p0#&PH1ADCEiQHVqDFWR{>aYHxezSG3XQuEe!jI5N zGKkJ?Itmyq;^JY-Q#mEa!Sa#1hd0}j5VrxlxQv#5RUJBzTxdPny8;=* z$xh{uqC((Pen~j^0{f1y)_t zq-s3Kn?Y2jV0mZ_Ot3Rw9@r3x?a~)3XNulq=X@>I>xhpY9~LuvgZjW6Iy(OvK!g(f zLhzjIOgZx2Tsy4x_4x$hM<#%dT$3fVpsx~_Y8{oK8hel)Qz|m!8WEXOY1yYq;-ELF ztn_ruBA!@K9wq}OoNhJrF(!*BQlY>Rlc%@4f!v2S#Vk?C`7^BE#~I0gdV~2izTD#J z$L?S9Q^6a9y{JqU*lf%@4 zW*xQU+d;6^SIhc$7+`Yh8O1uKbdHuo%C+$AKz?t%PeE8(c8eS!8wT7Vl!+1{h`9Q( z-?brqGx^8Hzkg=(+p=ShP?rN1^-%bNnb@rm?GE(# zwK0&`ZFX}w!DM_)-HJ@-qgb*`N1B0h{&}RrtFn)E&i2#2AF_jG$b8u5^;e3{H#^GX zAL^m8tvtGmZ!Pdcs)xcwNP5sD3OCarakP=qlmZs|R4M=vSv}xpE#;(e@PM66h%d3g zC}I>WhAgVx`1`R}K?(D4#SYr(z=&Pv@&7TXc^}tf1VrKhhrOflX|)6u?W0#xk&Z9x zy5S0{CO|O4y*fA*&HXwY%Qy}+@q}{S$|!`Dw(!q1n0_%C+MIrMK(_!vNku}ekoSCz z#X7QNb{iW-YmW12-yl;YKJu}ONVgt|;!i3+k>zP87RsOkhwmfsODmn<6Bi zR$-Y~=G`qAhY0Nn76)|AFVCeyNjipbhN?gcHYw{e!?`5I<3YudCKv9 zXuomnHjA_MovY0{I^>7C;M<$eHV@182`sMd+MX9;R$y$7D()Iw@WZ<|b)C+@quCLJ z0_ie1CL}X+0Z5;SHwMl;7uslJtqx+w*hHq-Il4li%*(3KKt6nd?C{qHWX3kWI5FT9 zyEHAW5EVv=*eNt81N3SoK~pyn+t+b6hNB~co6RVS>}Zt`{6bM2yl1ri=gF88z}?eu*#2fUqny=gz^~k^!7h5)1YY{@I7F-GDDOW7 zUfr^TMsNZWDXsGG%=hnbUVWt^u8u!>Y<%^Vp6U5XWaxxQ@JM;DA*Ft4@RqM6$}d0M zV29cl<2D4Cp{%u@ixncEs*cwD@)~(}$UoEnGX=TmhCP2`+X}SzxAOBB@p%D$q;C0| z?d_s|`zG}NUw;0gKLhGEj;rj5A6{?anO+>`C39^tGINxKvN2r1Z2TUXE}U3?OF4t; z^YIcEWS{SkbUVH)THp5s3FJhIobD zXLEZl{xplN&I1K!y7(r|7AuKAWkD#OG6rXN!6&{4R05{doyXM}he!mD3@nKfNCboq zLZ@a4(whp3WQk+x_k9IR$ zRWrkuaCt&^oNE9HPR%IpBeTY5rvc?lJU@ZRcszeM+9*Axn&?MVe}I-9-zSOlta{;G z=#;hb)9JbiL=_Mnl6N6IEx z>9uZCtMc1i*tzgZFa&7eDxxIo_3C@&Mstu@bn9=_?hYg?N|(Ecp_%@Sl@<>v%H~j4 zbUV;P^>E5{wS^vgBg0qP8`{pBkF9)p+nIdWPr(84;WV~^Yl8QQ%PrM9bO1g==`D;T z?CSa;>|(Nw^qrS%A6G@3_`Y7^&sl<(fGR!et%x&V$zr~bK9skB0f9hLumPfKgmc+# z!cTT1%SLm~AwKz+j z!{19$mupSCvUv#;bvlt59`>3Qz4eHxqo4kdMEo?&`afnSPRCBYlmV<@o1oH0Rd`fxoE#?~yw?)pBQ+gnzL5&;k z3c6b!9{QKh7~eE>MihiLh_cx`^W9gm1{WWH)VEA|$gE-Mtrkwc$#bcvhWUe8iC&zq zAJfC5E$B>J{PaNo)BOH1vQrZ^?Z0V8`DDTaa=Md!o(?&eb7Gte09c5oiF%}1Q4`P( z?-?!eBBX0wS2K0msL>qM?Rzg^3C46d8wVr2@TUmipHOe-N2@0}J?`S7T$SB@9O@MN zUhrWPav935nMwp2Jo>Hw$yye{JRL@QvfwC@673`1n1a6XKY9_)hFPa&Z%K`4=VS^W z>%p@v=q(&_Vwmc;oSP3{(+aY=2HIutv=r4sd)hZp*Kt))}N#FpXFcTgYMDwAm`PY-)9VY#$ zuBHhu9zj|Y`Roq6WkZ?b#i88V7&4n9ePE&6+N^!=#ffTssU2O`N>?zBv=U_Cn__{z zJjPN-j;a)1E35A(<0yiI=r)1{m7wdyZDH2dp8?*9v5`fqZJkhOuM zm$WCp*^^J;lGBb^At{<&CX5Dd5ZTfz^@7aDsdm{ntc|?V` z+3RuEnlw>0&fUrkHOXu}P~n)4HBw2zYJSvSNjRESSu|=k5n;j!es|pRGFSaoG-n>b zLIPHm(T&@?Ny14A@X1rv7=gU!xK(Jj84)?LZA%C4Ysg3CZdo9aAdOT3n*@YG7IwcN z+O*l*1|HEgq{_!at!0J^qzVXMTqpkEVx6;I<&*L=?)*(P?HkzovK-&mdBKUz2;Mrq z5d~Tc4trm+py5XdMz{8Zqi89}5%>f^=@;=5%C68jSAuT%f{EE5D|=|*Hy7vOY#^NT zgsIs_!NXF(M_;--GSOEy=`yVuV}Z7*>j`4ioI@O9@7L3m%RH?rC-u5SE7hp^D4KvK zeQ<@Y3fCSZ#Ysm*4|qIerp5azkhHbZb7gQ$$`M7KwHGZh(zmK;M_;U7K~RHV-aKb9 zSL*y|#cSQ%u31eCngE+UUlq!0{fEww#q2euqh;%5K!=W>1H>o_*-ST!SJ56-^Q^t* z#K;j%WS5O2sF~I0RYxUN5qX;;Run6MyWf1(1-}&mvnx3!WNA+ePaJmKK)2zFY|VAt zed8! z`?!oJj9>=~HfmGzJ_tq|_c6?Mj{Os6t2%R%_4ecX>b_-9_uYW>|W( zE>mh(Wx}c^Go{+sYzUsPsa1!kv9-1mtLrJI=kmlYMYk*y26OHKZ4D8R3#^OV-h^U_ z`%^lll^0Vh;I*K6EN%a@?d=KX#((PM=-4-^e2U>3yJN)_-p=O&3_OcyBJ;d$q$_r9 z$di6rPTi6qsQ9?$om|ptAf=?;1N}IeA&A$qDq&)K5@OsS-m{y>M=bZoHMZG6yBBiC zC^8B;NeFGPU+<7}`~+SD*~@hJV+M$qG8rE5&SjbfmWBG+0*Iyu;JA%$du+>7nw%iE zBP!0%#1_v16B9Sjn104ZFPso+Qho$udF1B@=~<1+NxVQo=Sj|E#EsQolq}0@J?s9I zx^0raCt*;cVYOA>O;YZlO`^r$ZbVksroPxqPf>?rQDh&G;F=Y$v)eLY2{pOl@iDh5 z2*})V0Rf{e5j6k&+mPfhsF%j}v_9v;P-R@xLkve?i44<(|JxFFf@8AAZLs zvaziMh^WWY7rzYz5b#{ET;x#)Rf(mtgvrOk-~Ldv*zdDj9R(0d#l*yTC0Y@(@#j>(x{Lo@Hr}Z;ee@O7mM^<`~d z2}+&BcF=Q)GpoMenie2x5h{|v;m;-;9|jS9r0lt%?ssotT~6(W<#Q^iu3rynS`MM0 zd_KK*28_PM&X;k#;$fR1FC)t~=L5L$4X7kz6>Yvh6YfS!oLn$SVXLiNMAs{$({0N7 z(l7!Bzir)r@D&a;)!m)W8`A<^oGE*p+7D-XD>%Np zu@jGC!thcwwPH(saGq$@mEyc>W4eS}`dF%szEY;_`sXdcWou0Ov#)bG`bA^@SNipT zVNoW$Tp;>@bcum`s z^AC&Uyp!b0)5fCJ;L=3sKcki&-VeOigF`bdP$O4s6HckN+{=qLF`8pkPkqyC^(AJ4*T|F&KZ^j=)G;gjZ zf$M8L2x+Lp1rgRg-%n2A{S5l6sgW!^DA83cvO+(usb|`<7Fyzd!@1F=#H@ODcu!2{3*{_>C?;u1^OwQ#IcW!0Ah_%Ln)CpCo&^(XoC-7h?vWk}pk*f4!a(Wp2b9ytp3r zBc-Jh?O3HCiU@-}KS$L?SqUZnM?^s2usP?{Vp-ezJ&odINg7yZo(em-g`EF=NZ+bf zKfeDCOFub3n@6=%)l4;*Aj^y^1%pd;V~mqkFJ~sh5;PWDMoH|lW%x=?+y3*9JS?PI z;pxi*4>8D{G#-(2)Q*WQJ8}YXFHv7Q0`7rsIpI7Z47b?NK))x*I8xW(8-%oK@xw5$ zQ;0&KK?c8)>QIs-&M2{H+eK=#zFdUq6^Y{?z5OK;9yoy*LB=EG&|zeB*V2gNM?;g> zx40H5#Nvfh&+NkKQtB>V3KjYbdypK-vU2Rfk;HO$e{;?JRn((0Boj@)2A|Vk7wBJ@ zxBs)t^H&k~R_w9t1Hg7b+#+zA78VdpkEvtjo0x<|=?ubG5hJsOU93pX$-iDHWmHUX zrZNmBZ+d#v+62*vMC)s3{o251@i;6(vjfQ%o@PJ&X@B#?BDvXPgg+ zxT-)jXM`(pEQB6HD+y={q043V9u=b-Xw*dxDMQ-t5$7ckgphgmjeLkrR&GdFZvZKo zhSJgoH3#ZL`%vUALAKo~-1v|q_A76U54cpHD0IAt!wUz%rodH+eNH#f_p=t%_QCDo z>XCnlR15*hO)Z4VT#{qyG+4v;I5)na zH!fXfwam#WRMntyi;OlgK@GEpIAG|%2zJL>IrR3<&3}O$ykk^wJIeD%*<6F=g{wR| z`@DRc){iG!s}soDvF%2K(IeIK>8s6-&K6p@%pueFS1nmMV8qAdl~J&_#gj9 zkdppEkWhW-XhyH%qu1?Y*g<;K9vBl zBI&b~N%pT^c}5n&7(zVbS9AOB-BQjD!K)M(%`ELcij z&ykSY8jqz(Iey^x7pk5|bTf9m5jH&*@9Z32sdh|Y0I0tBPXh|WCY^jr>HteFRu;7e z-~9QD5oN!far+N0dYVqO|mwo*6Cn5mg8e2+at_LsH6IeqI8EL`>b3hl5Rk9 zQ z^c@646X?SDEJzaGZsypEsqzN;@v3J+x(w0`BwqOIwKSK19zBxwRpJqpz@mN(sGwPR ziJp!_KO8Yj=c|ceR9T5{qs+`;!1jG^Oe{Rv#-(|Qz~)_4sBk~ENHmxVXIgkw?t+{1 zV4_`(HDXd5bc`Gx!cd_K6mca!B?mM4>*E{_psQN1R-CQGba5JPS(N0i?B=;BAK5MM zGkblF{Nd0yT9v|`I{OjV>^d?u_OLI*G8tk`Fu9}0TNqvZYy)eu$ax_+R^2qi(SC(# z{4ktWhk)DKgFqX5jx)AuXi{8fK`Va_%e?@TakwuCmB}y*JW>Jg;2;q4S}Yq?$!VCf zM$JVm(yM+yLFdlwV#cVLoEzP%enhX{RDaCpSxRuf8FX{ z>*>aEI>UemXs-`+OF6}h5L`UNh}L*R>;X#$Z#RPu-H8-7cq6E}%*a_J@n~}itJxD| zU+s>ih_7??NA33Wn(B4Mdn;d4Pb#X(nUKS(wDNB0N6Yff*`nINcJccJG{+d+V&{f3 zgtrK1fuA-@Gt50V&dflYSmvAge}%23zJW9${Jsu{HSnt=4CPW!bRa1(mQJ3PP}h(D zs74H;BuY@lyxirYB=Vl5P)!`p)iIqRhyQ)+`G{CPFv7F{q~Jz7pe(+BAl@N6>O_D* zQj{MW61B)#Xi~zE%8rj0b&w})t{%yZy01aPU!2%A9Bc?UDUDZIw?RAY`u9@tSI6Zh zQX}}wr`q}jSK0pGO2t3AuCh$bS0sA}@eP4!25{ac!B47&jY_JrD)xKzhi!HtfXw-P zR`+c9=Vln5xOm>{w@0sb_d9M`(gpf7V)Yc5bo`l|C0+A93GCVU3X~SkuaNZ@>69dA zP%-y-L9Ln%ZyzP~xJFYZhf7S!nMGw5Z}N~@+(6XX{ob9~}m7+SZ zYETG40J+S!0NkPnS;P^{Xu=QmYGUd~1O!!64ootZzZF9|_l2Px|IF?7hhL@VZ*8ZW zk^er`nH&JguyYhpv9i03qe-k|x`Xz9rI}#eE_bJ)QXHiE{YxyRvTV@DdyNN6Qa=Mu zH^d*z>(v_sDajyx1gNN2oYGAE$B7>HJcvshvg~9GP_b4ml@Ijhz?MaYVa>PP`eBNy}=z zO2jU2?G9Pc9l3u9AjA=Oe7D6jWnk4hs;XvCg2NUaRZYB)qFx&s(O*&?Irex zjS(ycBipycHNC&A!vZV1v4eO&wz91zDHWRCfT0Vi?>hkNzBwZ5vDn^$+bpuLj-oN# z<4=LUO28;K-3=qrv5V2TQxq}UQ`O3F0rd!|aVKGLOH|k_s#aGVfQA43n>GC}%n-i# zXejx0@bbT=%>w^N2k*b!==z^(o|2a1EI;Z;vJ|n!IhgrCqxnoYYNB~Z#H;+E6xT9u zw^Q&9WjAyLp+Wq#rf-r#9dgVV&am% z_fcPN;Srm?7G{fU9=^H#Dp~=wwfXiFd7E9pCrJ~gt`NL9NFq(&eB>nC;E~HYy_`(s?aE0KA+tiN$#ZKiiioO>Bl13PP@PR z)-M>?()?yp?SdhU!KxSkAMWIA9wTP?xeTfl>LR+L@L<6QeD7Ny&d}^mX(V7RmUv_9 zj$#Jv)@6}IRR91oiyD?u?H^f_I*}8%0c*?GXi)^o=U;8H?`Q_sl>*fQOjlz2WgNeM zy~Ry)Fd9n+`e=!AMImGgIu#)mKX7{6%({j?mU``gklh8vqo2sKsFq2F+D9vAd;d2uRo)@PN_>IaHTeZ@VZIJ3 z|NrMf{i{?4Dg8rb>VO#LyH=$a-#~x_houg07^uZlJZC)58P2F2OlA(RIzxMTQgGO1 z2U|V)zP#%hv!B18v{{PWqmb5iL97W&wm%52njB>)=3YvmcDLeXihUKTN7zNs^&^YL zgLSfMlRwMiM{H!-gdQ4}Yr-(?B0l9on%#}>w{N(?lf`({s8S3qJ6s|ePDL2Cq&IFoo+#KN}(fj^0@xC&l>b=A<|`wfoUv> zJg9tADj;J1TGuj&3vBvIYb#V-HN>I|TBT@pW11A|z^!250Ov;sP|>o)pu~E561UP4 zRD)7KO*|ecMvFfMnik>P)STrdcE1O&i&-jy&AVNXu*8boEj>{9X42(F?v7jl zs8@?l*l35M-9 zQ*y(TWz6r}uXE!06*BoRw(u++zTBV|PV|zB|M)U6G5kjzC{yKYKw*Z;BNs|i0b`DO zDy1S{K`2g?ry8Y68;dRjj9mbydR9wgKzP17Av*K;`P^U#Bb%wpw~+Rc`VlBQRo6Be zEPUpKS-bLQ-Sd*;>0m_f^X(DhC#(;0vp!c+Bu|&My68lOiFEm)WwMoJ)rD~~o|YcN z#`uHQrlYZwF{2Z10OE2(1C%@3(nZE6`O!yWh_7_5B#j9hyy4 zgT1K}#Kl#2{M+I_)J;Y-s$svNIE=x-Y4#L`h;NelLB*CooPrUUXG*cL*Yz>EV zF>L!f>Dn!4iISti=W*q6q{`A=l95&3^6HqPYhCB{4~I2_R%z`p=o~Jf z(8V3G{h)dE`Ovq6Lygw+D=$^~RRY1IX3(Sh+aCg2)ntv>iWpd|Y04Z0ti{}_nEiPo z78tK^D7nqJxoDCqdIcu_(}UQb=qdHe%4>~3QoXyw`M$kJdp7}t z-HAAfy>`#_oW7|t{}ZkiWk`3s?$+_1PlSuM(7_2$!b0xlvA|3&nKjlY8Xs7M&F+wr z^N!xWin~56qB_gHqFA99-_tHWzjUI0DCt!S5wE`j(u@KdZ5uKjAw-k)4TnrL8| zIbV*^6w|eZ-#@~gbo!c&MfjyXd$m7>9v}|vU=N;&$X3pAE! zE_0)}F3&9UuQa@3;H!I|UW(oEnq%Cn2^7yPs1makA{7TTR_Pf}p&hk}c1;dj2BkR; zvB@t%XUMQhjR>cChiH&H*dAam6*qRl$FrND<>>8r=Yv~aJImX=o-`!rbozmz@3Zoz zn2&iwhOEu@WGSx7jufZB#Y zzMzQt1UZOAvoWcx3}Mg_Cb*C*I^r*W&T6-W2w;rEj}6)j{Y@wBg;niMg)5=5GL-;eHiRZq@UyM@WU_F-z@@^_b?YgguR<+$jxGR_yrK2R_}VAW*vf@)Z|iy&2OsBDn# z*$aw8MQjRHogkj_#gxq{5wSddW$?kBf}ks^qWH5Pk%C|}e)c_FW4j&HAjS(qE3^Le z6D$w=bnWCW#Iq4-hp~W5-V9QBF-K(gPAd9V=(LW6Etr!t--1g|3P!{ZPEBX(wM*cQ z=f|jPzZVLm6D$n7Snsjw5JgBVZFy5xyaKpRk@uaId%^h#*jK>2Kk2q^$!O)kb2(*Welm+Hp9Rpcjk}K z(P1pujjp*ol4yxZ6?ZyEvN(_C zf*F@LGdFQGLOL;ClNvn>fmpa0^D>LXgPFO^t4>d;aIpnR#ks5~)envjP2HnUHEn$k zAbGARRoOH_sKw{bnQL~WYZAW87#jcDIAQeC~hyIVrd7XV8s zPxiXtKJTsp{XS%hgGp@orQb=J17~zbuE{?SPoYiHxU>p8Bd$B_+q+B-ycP{uVkCDd zgn3MD;Gu&|!8Hp34UT}3cUBM|4ehtsxVka%JtVh4+uHxqtRM?(e9xf~E39hq!@M$D4ukOXhTKa+S_4tYOhwks z%>zc+bY?*EUEbI@0>>aL-m@n&)$}X@==XcP0UL`462O*#WF@-$=CD*jI`Q?4Xv#2u zqgGO>*xxeni4XOGPC>b>)L8J1!$WGw9JfM^%%phV#UoyLSMxj*L#j62q&%yMxbYpY zWv)+C+K3~>`DheVa`x2zK(ES3qIzmy7^ZsS$W^TWrRo8B;A6B&7Ojk33V$tRM5(ML z%ivJs*g8s%n0e>T>3qKx1@-P;RLA#DRi&%wEOcThycHcMWLpXwu64DLy)5Iga~qJia(U{zTpf>eekSkR`3oYcmmdvG5<--NqM!3mVQI| z!%V}Qg3g8+qxkpflv?zWeXo>`u8uAyf{&LkD+xyhG^%xRa@|s60cpA^lbNQBT9dYt zs||V6!SW!}+ysxut~Z8>44Vta8Y2-RFpt)2bXNJ9Ds59gZ!nI4y#6`gYvXJ*8z(uy ziA+{i0P>#g0ggkddQG%kNTN0Uv9nkLdQPg$0)#qd#;g%*;NRcKy043IYJ@!i4bC37w5 zO368^&Pr&WTFxI(C(w7`IJh;+GdLn`nMV8a=4gwB+fw*eY~G$iOz>+;oGe75@F`|< z_UcsFS2qon^asoQXTk65*s6UgWisE0=L^U-I7S@Bst7FIKT#RW@r)JCsH+T6)zGG_ zfKw(%!@pA^+Df_(0*vb{suoIxC|;Nw@(81(VJX)UF?lRnF9 z(xcx6&9>T4-BI=!F8`Rcx8NkgYEM!!eij2N4_HQXI1l40ZPtA_E2)yPF^ zHEw`;u4&q$c>1~CQ>C4&Of4}powuFmw(S2Nl|lW_il5{41o&`YQqtvdK2xx{R~T+uNptXNcyx#<1_Nkr~#T^PI*IQP&Mac z@+NVtcZ=_Ki9Qs7pzapX@5wEGkGFlh=d^n_t%q3xzNLT6(~8mu(X8klk*fxIS5O;r zW*et3V2)r^jY$6yrp;0pqjjb02}>3$hS2uW-w9%gGIGdz2`Dl^c10sse&G|$>PA!5 zHrnSLJb42hRL?Y+fE&LHhlKuYm}=2yfQZ0ZD?v_J9+G%>iD#0 zdaSiZE;JFTjpn(V7-!r1vbXN_fv^Whw8i+Y>wUgnqIiL@En%b(n5ML6Px8__eLIi@ z_0VfBx@*-GrkF>{=ybmWdGm6IucH&L=tHen0j?rWXWguH3L_oo*+n&ePG&8nHK^R{ zZHQaMt0;V$6^#NqoD|aj&Rl7$&2M*ynuREXQ(sr_-xeZPj|mwXxv~`(0xRq0eNlwdzg^ORXYrh<#Ooe1o_7(6zcN2E z5za(E*QGGa_18}dyqG9uDUBPsDq;mPoD*V(?Ne0oZhq=HRZeN7TuaiqpW>>Foz2ym zddTJDnsVf8Lgwj%40J&Y3f;EC7%k5I-n25$0ak_-g9*|9M#(JfdZm+H~HBTW4I;gdX-c&U;a^>s^7u+4( z?A&4{a$Q~}n~xr$Y=rhZ$Bx_G?x9X1C!8~>JQJxYBkPl{+1cjh>>~<(Iat?)v5W8B z5(L3D9b3m7h+4ZS-FVa|31-{}+&J)$OUa7{cRS5HjCdE}?V{xo+l$@{-||cCJ%qRC z$hwCdmD(k*#=c^NE*~qR{$M&gS$V2_md)t>vt{cZ&O8-F?2eT_$(?}T(bG1mBzkyS{43dE%r&T#w8Kx5u09lLtWcl089t*~h zB!STD)wVCV--p03Ll8buW7p6DH7PI|2t0>2$t|+7$uo7)Yf}o26MEd1>E&h7MXd7i;rh%5~n?$mD;$bNF94d>oyB&?`CrU|{->aN!>wAAVFG zDJc*_MRN-QVNe=LEo({wX!Ne<#57I(QNY{{Wnv**a-f7FuTNZcI6Q#!G@t2%VyI09 z*DwI#-k`1J=)A*hs$-;jORp1T*f79g6i}{VWR`ulK3h>yq}5oq_RA8-bkXv7MNw#K z!rCqGOQ}AWk)tg|PeIfV{gX4^=}~|zUs|4=goqHo!^!6o3yp!6kQE;-zAIX7 zSWb@i<=hLV%T3AEt6Yi-x4a|bb6K`+)?sqN0_Sm;?o=bEIMa6rQ@D4|gJTHJTC_xd zMRO8DezpN4G;1{J0#Bj@7DjiO?c0>DVO zxN?P^j97^RF)aoi_T#UaX;&VTBFtV|8mKwg*(?L}1&}IzRdwb7j^G_?!x?i$wdbsa zFEh{DZJD2dwv7oz)VMP3TUdGoN&~v9`hwi>gAjfU#$KXwOS7o?5R8~jZL-WtdsR@ z33JZJGYAiy**oMU4dy?bL^QkD0?5M`@EZMAhR-rMChv{gk%~;>GdSiEM5W9$+7;TN zRy3h{KZf|)E*Hl}iV2iJ{*_yu+kL3ba5k|Eq?z9zjYKZ1R=^hUEGQZWAS8}&?Ke`; z@66yG+6B{PXYnWDJ}M=odqJ-Lr4IUK=&=g?6<1<~(|1DgfW7(+} z>V1b~#wbAIgc6spc-H9cC2i-i{oXi>4{-inDZh0Obz#MYg)luEzJt2mIdgi?ovF!1 z=faN)2EpukqX_&`#TA3TjbS%h8lAU>mDGZg0g`95RCxtJ<(`cV)3OnrA%;!r5@+HaF8mT}H-ckbNF_6Mho#u zd<CgL3%7VTd(9+ z7TwGDsS{l6VWGIf`%gS6$yNkgWyVk47Dh`bARQbi9Bm&8my=i@GIQX*SC>~J$r z=%(0upJ`bgoi!n3e>v(VY>rOO`9z@T44jx-%bF0{UB6a zlV+j+fO2=5CP*Q8E5S-$8wN1phV_rH245vmn}nxC+8GBD6XU`5A+;TtJ`Vqw_gCDu zH_8-fz>R=hU6k_wF>#oT)%tW}%g6R2s^20DtAo9Je9R9MkB!Vuvgv{ODq^?ka0j<+ zf6rJS0*WbXN?cFb?Lei}5-iJ%E7B!73^H#PAZd?lcFY}%(iaO(yU(QPdKAP(zhNJV ztQ-X4m{H>9vY$e(a_$I) zg^ovURMhCcEE+VOg}e|?wK+SDHEryfT7!8Z9s0-AMc$hb{1)s483t*k z_z%F^J3(M60UGhW{bCeWNB@E9&X5o}! zOe)1R8U|aCmy|I|asLOD4XV&w(cPBQD!4b|$=0Ue6NYkA?5qEz@fLh^(iYJJ^o6km ze4}^2U5hh}#SS+T=iF=>T~gBFqfLfS#1DU!M*BlFRqb+MTtiq7mj@N3inR6f6m2YhtM!k`b7Kp%JOH@vD# z{Z}|F!RyWGFso)dFmds?RGI{mo1e@)Vx@0TMDYrkKeme!qj(h)sU=Zos1)LjxSHQv ze@Ac~+}N!9#_XC=W((F%3ZFKh%o5>?>meiDsC87jSe#VG5Jk_%2*64rM1{mz`g2E+ zIL+MYt;nBq{qG)-i8K|K(XT@7|24Vd_GPYj^`VO3H-|rp{{(>Si`3(A6 zO+tRoJooJ9-NVv(s&U+5vWsXhS4Je{4QF7f@Zcgmyu3cmBJYvZzyzwJ^jX6S%nDc- zSa>+b1j^^yI_M?_td$6`a?K(p?H-8rhg?f8Z^M3eN->1!8ldB;nAP>fEAL zi*LD*9d<~-B`i=Np0VFpu~|z~6AflTgBCraq_-?m2vmTJro_%k7`xeS;f3~gvUaN{ z0r*v}p#HGZ`jx1(vgfVTQ3&8k0lZp9gksSQ`f!DahyFyGw?qUV886{R*Z~0q_A{ZBB#ZvB$)N<&4;f%M_@VZwPu(Fi)?=zPw5tvVGKvo6x_DwbXmqVJb6j9F{4YIuk! zbNi3??c7t2lRRrr1lgTmk#-|?V-KsXYuwxLPeIi%LkKkFh^pHjty_*xbw?Gpsp}}o zw7Qypc9{@0s9=!>cY5DRCZ;|s5E#+B9{qU&h_9-V;m ze#&ZcQ|qNnHA}6tUbE2vs=o0_d=G`dbImp&4BopTXAQci5RF2sp;+VS13a*Oy|jsK zn(vZ=1wE8Yp`HtaHktb;(MgX!X4HrKlrxXxE8Iyz1S$nH`6J`xlAe0;j!Gijae*sq zEoF&IJ*O-jnvUtqm|=v=z{>GrHUl$6L^lm@AgXdr2zQXy0tl?MIS zqtbUD&vVXk|G)FP=hpXr?|JXfUVH7e*B+kzs0rvN*R!zOD!HG!$n(fZz1&cAg~ove zgL7vvcCeP-XlxP4BKOIy-6Xcq$M1<}?yLQZPmld*{2I41a&7U}WBiUnGe5Dc+nehb zKVrDCQ0dvcGM?JkB1>5Wavps$Lxa{qflseHA!vz$PwM=C`y>{<{(CS(Mb6NHdnpfN z^z5mRNPVn}Mj!vVfB$Gqre1q9_V|yQUzXEAAiHPs;QM5=4=an;#B1d&av$arG~hCR zA+oUEKp|@J*|(e2GfbQ6ET7qAY+&24n<(6_ zakx2;EB%T>90#{sfzz&T9+gdA_SvSXXKJR@DKMRou{zB-uPJ4|V`Rr2c+*h5qexP@ zUCik(+~oHlq#4$Aa@ri?UDRm&^@rE$T3ykS(k-vz?zK+h+GZUorM)X~)67hj z_2+GEQ#HL8@0hz;<929@zc;&(NeoLu$HS!5BS+bFd$upQqBwh#Fwd-dwHz|?Bb#OwEaQJ~;*k=TS^v?jwE{lyewO6lgw7k>MB#WUzg)6 z!>@CJqT7AgUS;3-?6!s%|cGBbd2d>+;EKUx49r{D$ zsby*Jp8IR7?mr4S+EKpa*CaWkD?e1vbe6VucIom4S+baM)QL87O}{s*@Wk!2HSJr^ znLHf%&(s84{U7El6nG0+Z9FXL>C@#r7GxJsxGWy-5;q`WcXZ-z0Q^3!!KTM~KT69g zmPc6o&IRVXr?zpNI-b1tG5e{UittOaH+9QQ9|Wl!#7;}UIaqTq|L(z?{VFFh># zxIgWup|^5w-?{_`rB#OpHJMfQg{MRd2`uLujwZE#xVefPy86?MrmUn#n>DgtrPc&4 zsah8$CV!!`%)`I@8O-Wa57g-O?Ti}eZJ0K(-OI4rpH5VRL8?X_$S}k*HaEgGC zOwsdmX$}W(?&@#z<9NZ(Wy&meU$;lnV)A>@6RYhxc{eKTjt&$RWW628mzCgde_uXo z;cjyt2b+8e-JIDhkAp9~Oe6b9G)FeP1-jY}l2Jd=H;=-b;>z7j`LBI9LRN`!(FpDTth>~of>e|g`J?Qp@_?ZQc# z9eLfAK9d^6!|xt3x9%_cc<))Ny1(6h^ST4v8~b?cWW+-BoXPbI)nzrd+_su>)GGAh zgEaL^7JJpFt~Y;i#jnzN@P_R2`%klcrYODb`b(>eWGCMrR>&|~eDO8!%ugq?tve*XU0?OM)(&$0P=8DLs{Y((o-4b1(+!;4p2e1`Ei|yJf4`4>)88XZ z_k1?j>E{*pmOQ7U^=kEY$?wORv}$WgU%8lkV&ZiD`5jj}Rg%Ad%{5tA_iN_Y)RES7z3|kq zQvL5_eId~}{^PfKPaE|Jx}KfxVxn+coLkLW`@L*%<2q;0#8``64d1RTT6sBj{Zaeo zH(gx|L&MY6OSc7!Ze?Y66-s<`Hknl;YI%eG{G+DVCcS)Mu>R{O8`W-BQ<3V#;@Mhf zG9O>x9QO4|y}60QbjME$H`%_HdKuT$7)(1>ylwG)zId(p%S&TM{&SiYTkANq;^ZY= z$dF#anxNkQK|mSJrmc(B5JW{qWIHXW-uj+i(A`PPp*!7LJ zwWoe%`*CKba<9yl?%UWC))Z&C^0Pw^^R3?6(?WNg?r6IS7}~b%%bJr@W@B`8$?=a< z*!&kpC9BL4QjCnf*5OxH%za|Wz25iB<-4T-eX# z;h1)2j`wc6PaV4($by0bF@u{V*KO+gVW3y>HEcFJNmG1#P)2H7qg&gVU4n_~Duu5c zc5`icmoCO&9(pm}Td|oj{L1|+d1Y!viC^S-DmZT?pZI7X+9qzQE`6zvYv@?RO~15; zWP>Y#{%tv|YwA-z9b&Wa*phol&MBe(ZAS5Bo{}ULiOk>?vmz_qJ>CsePJhst9+|dn zv&}xMhU{)FX!)^F&OOVH?94N;=AkikE#}GCV#%GL(aZ9qcD4}8|1dPAwM5;E<91W`51G1o?c9l1hHfkyrnp0a^R?Xowvm+p zqn^e8=A<;T`qS7|Uu5p>rpz*)jHwl~F5cmM6=lD(?dY1Eqp3Q3qa6iSPQ4&|)3_`< za7p(Z*=1(RlrNDI}0Yjn>4ykEIKTj$LATh`iItv&vsT{BtNHM3jDKG@frZati^ zBT%d$WleI5xX>LBWs)GL%hl^{p8^C1N;F!tuV=-{o247s1TOJ<=-$3$>5ZLi_RhLJ z*($bbtk1K#B;%7hS9`BaomzXubxB~^)nh`Q-RS%yM|1&w3g=c#2Ri4MQ z>$gknSrYFJ=L{34+sM3^u{sv?*nJ?RHq!0akYvE1%GW7}8ztJcd?+7pwohP%-_qDHuzQZsMjmIK$egn#t?n35WQ?bm*VWd*9&2YrSI=G~w5Zt!Y{f@$xD`DcbF zb6sEeZKh3s)mh$O(-rsrl=E}`BEI;?%izT1+wD2xPfx$NsJ=|Iu0Z#d zS=sX9^-%xUZ@m$#WaNg+XMZ*2{91NHdA2XFQ_<5Y=dDr-Udq>&?ws1NMlsH=a5?ka zHN*cozKo4xp5X$43J@T;rZX_C{=W_o*pRj#cD^6OJCN6Jzn(9bTR6q!k$?`rlWvVt z(*27jVZPbM&c3f3f?u7_|Fvzik&&PdNiRYoVetDUji;OQqb|%bo-&Y@;n0zzUA#3f zj;(fzctlW!Pm|HUlc&xus>$BMo>BHNepW!>O1IA|WR$iK%a*b>w%posjK?KIO-89P zDcepbC|;~d@JZ5_q4(Z#Um~;;_H{|yemi_}{j%0;R}P%?h!e9I*~a>`dP8g#dsai{ zS;2Wi628nD%%A47Jg}avv_3;zlIsp%&IYDPQTF*~-U$`n^*F*Q-Q0bAMPAj&kIyx_ zl2fmWGzsV?&MQkyvYnP0)5%>V#cX)4Zib0l%FSmh@-?qLyt>kTR*Ue|ptuHsbiJCD zh1!o!aVe37PRH-$kQOk}TSWzp>=kPZ3+3GZ( z)jWpto924vavxh+#`<`Q?Yc-CwaGkFPls{pwl$DSU5+devubH6dN)b%WQ~1Yw6;U| z)6+S5A74HS&7q^bu)EjlmRP1}4a@3Mn@a2;ykFw)-FwGs2n9gv|bg6HD z)boTro{Vdp)6&`EuT9E6v_#72w%uov!;91{PdQkA4OsWdJ8wSBXLLgM$BB2b9%bUu z2TAX;z8{G)u`A=UUe#Xpz0<8b@WNg`gT3yF{5BqDJdq!QR)<%Ocn|i4E=@{(^RPlU zXYX}`)$TT*4qwi5ac^GfM=?gfJ#{B+#6IRyn3SWC zTY?o|hs6;)sl;-gh*d@bb(xV2U!otZxw|N!C-7d5AJa!yNwQ`cs3b*&xohXU|#twM*pP7rG9m^}PM=uXi|v#dY6g%^iFe zww>QXxNheZDOUw{?o3L5oB3r=+j)a6(NYPf8rN*Lmfv0|CnUytMdgOX@PD#QY})!= zZqsM%&XXt5N5}7|1qAw&0?Do+a@d~Be>a@rvFg!(@#mplOD}j%ihX-R3#Z#7r`(fg zBtIY5DY*8nNZ-{qcZP+z+i?GsP^a{y0kLU{KV<6J)VIHz2753EX7Xg6otJg+@x@Np zFApzXeAzxYZ~3J3EjJuz6g$USAE@rA+}3*Fka&oz+gsaZa_25p*t^?VY>8K3pX3~~ z`E)p0J?*iAN9v0DhzD>!TIhVyYBjS|Ccl{6DUhQecF`6k}{Z+eeD(v!$5|&y1c-d9!?&bAH z?RP$Sxi)3;b}sJyEOoLzfbs3{Szl%Q@2=0|bL2wgB9yLf-F@@RA=REka~Bu7nwm+4 zJv#n^$-Ay3+D@HC?-(;FyC-)gTd3OOpJGZI1MOK#WHADnvY_A3E4(jm`njqAn2+#4@xslJ-zBSsa)V`$p`%_a)$lkTsBg(9^@@Op~-*xp3#SC z-Hc^*p9iac&fXkX*mAIL>2VWh&c_cY%#hbVAm(qroBuOs{fyOlNqN_kY)th2 zyMV$nX_X4+vom*g!s?qbtiFxE<%G5;VuQi)eGbM~<+-B=XZ~c{?a;TVpN;)Wael#r z8>g!Gw{Ed5KW=1Xx?BIppaeN)o^!#L6rD`X+utSJ%?nFJjK zgk!4e{E07^>wFUup1rX$x)_lk9G59xRyyqRUV}O6mUg)5469R&B&B2bENtHCoRYGe zo%b!fhAFF*C68=4XY-;y!JoddvX^;hF3CN;YnpLTPRY#63C~Zu&lI2P$gz0F6II=_ zUKv{Vx zu-Ihv%r9r7`eBC-(|OOP81$x;-+eDM^jTj$E-ZT~lgn4hbyiO2=44m$TiAE@)}K4`r0!H{-et)zrzU^?qRraA zb=j%TqYST=2mL-#tno*97@y0AG5@xUbAT zqA^ulGVm@}oOoJlk{0Le;+|T@Es~{C5wo+dJ8!w1(f&4uib$!4o`c7+Z z1rhz=*Ms$bB43QSM0@h%e@>gW=u(CL;^}6+3p@(n8^^92nZH$1M_bdV>CO6^rt1q@ zq8=#6E4#g`J!Zqhd~lJNlVjHfH^vXQUY%p!v^p+yx_6$%qcwTu5`y0zYD7r|h}EBz zeX8=NxJ{s@ZM|8fgUg%zj+)5LnXF&d4{)a}_pb`|z9+kEL1Ts1tv#i7lUB~Za^rS6 z>xLWejsVUTyxUdwXcbi$ois2x?Ifmr`DJF_8CxYU&J(IO>ETCo_9Ma-V`LQxgJ0|(C%fk?ks28KGU;r*di3t2X8o( z*+0?9KP)^nZ~u$O_ltS1t}Wek&U@9bnCT(u8)u)&B8eS;<&b%QuLpWgdaDiAY z^L*8qWh{zW_pU$Jsrwlj&7O14R!@G_R}D_}T4UL2?OlGHCs?G_8|CkHvpi?HTH-s$ z!6wzKlhl^1aqmLCOkyqX)dftqp3l{-2qX8tY9R2w}*McMs3STFI=x=@%TFxRYZnw;&?Ji4f{MCD+pe{~n8UQl=}=ePa;Ng=4JY_X8m|^I z&hg!ED-j@I*0NV%AxrZ5S;bxFt#2)1=@JV$R=MXxrj>BV5y7_!Y!T~cMyB>kehD|< z|K&)o>@U{6OqZ^6Mp^#qXuSA3R6?-swDpq7t;^>eW+TOS^(feG9yptE`f z{p|f19`83>s?=waXLd)heC$(}p1W?g0F*0LQn>@r3RyxzQ%|M2an=H3-7 zy-&$`#}9<k7`2!bz@fd7)b}f)`-VdX_%ToJay6>-sx6Tv&Zs9%QX%2n3Kpo42MS&;4-C`2dfO*k8fpEC^I$4WAp81 z2$;3?VNHASP;yL%X3Ym5)r*O34PHKcULqNX-5s6Hsud5(c3gAts;+Fmmbbp+sfM2B zBb^q5LK`(7xA<*YOiWIyD_pNnUgRv8k{c)WC~Mt^4Oisk_lT({=0_h|Xd>3PDY@^! zSCU-YwHKOKM$Szd*k51Epz!fd`w}gOnUbNGn9urNj4WS!a0^pc&eHcx=)N53#4ooz z$WhfHR%ncyL(&~9e$N&kn+m{d0TWYqr1u;*idE6kWD=G<$}JXgjpy51wI>hb_c#}O z%7q{O5mx`i#J5O#AzAK)n(M6x^`Nf8^>+<6x zU59Epb5h{t&iq$$zuv6lEM5;6Qn@L2G{&_$<$bpOaMy82YECU-8!j!wOt zUlH*ca8T*Qt@#HXR=T`75i(;W%YMU?BHK^rmzy{(+@HH&eVLkGtM{yLKZ9p}^L5BM z^Gt%-xq{V`k@M8fbRPe23X<1mNM8E!?DF1ly_P510(eFsUmBZqb>N+}G8 z`>x}QY`jr@J;o*cHrD8GpeV)pDZcjO3&SV-E zU#lcI<*2VlWlV{e-*OeV%EnDHQ+*`lewJuwWvbZmzH3X~GV^K1_3Y_`Pn;RdAIB9f z)0|R}w0_I-13D&~4c9TqrX33VxOz@jFz0aI+w9hT18vW8gPZq-9uD!`WB+pddP$)? zkzBdMz2e8Le0{`q9+Y0%wDIAZ^>02ne)YOb@+h3!>d4gf5bmXns}1?F?eJ!SNx8>+ zUD;~IKfFEg^_p?N^6a5n+trfuzL7o^3OI5kELx%v`gWjZ2yP5}ODm^G;RHe-0?<4qd| z*t(b;y)HHW^uALCX)ZU?yrj?C7B;AbY2?_QJ^DD)Nx-GZdvl~h!<=h+vyGQ7Ke;F8 z*W@}aqmbkB6-^%JUE~%k4gUz4F6+D3SKHC|VRhzp`Q&exb$WT#gFXj|ramOae6!Fz zY;XPP=-h=1)0BIcUoTYN)xfuS&T9i65uSa+@x6Tw23c2HwN~USUsPR?GwaRist8sl zDWj8{J4*t>qGfBY-tl|%G=33N@>i3`p+_H9vvgi6&mD2)4861PsKAnj><_&!9@>kf zr1_Soz2S*p#LGOh%H-<#Tv3k=2Lir_%6B|S6<}m>=xwSy7pu*&o`qwFk`RY{t$f(@ z9XFI_$SK*Gx@0TzvL0F$Xm;(SE)UD98SfM;x?l9|Uo}*f^WIkX3*TC6t({j)-bl0* z@J;7ZmTb6_HOpjb#N^r_WiiKC(#X@9#`*fk&DGXD*5y#VpyDU{^MT#{v$0Y8cCK(; zwvVggrD*Z>eGB&V=*##XJ$`wEo^_{GYpi?prBmDu+fU_+bKK0jLADvPdeom+E_3=m(?8OSTKkwNCVYbN#eUYjD!H zrJLt|ZsxdPR?ntj-~G;^K5c3AanU&c2R7Yj73$9h@0=!-aW64_xz;OzZ-y{B7seN~ zvi2;kWns$>O7Gp?D(m~$=`-_9`#n~_0$VK$%AU+>hZm`_T_|?%XW|vvnEt~+UQ0uR zX_hAZQNca3F7H`6V%GNa`%m8mjMRxsOt)?+}2|K{=8 z9n#HAVhNs=BI;im3yhSUUF$EN$ZW2NEs7#vyt7>6d-je`@AwvI+G@7#xgjRtQda)! zK(ufI*CVBzmr{v_mzd_e4ZdY6nd!>M&lnsluj8E4KfNw6AU#GPm0i4pmuZ7xXusQTV8Unk{$#XZ&*&(xTc@;h_l z3uas`^J3VsHp1f>ZvzdijvC}-*>?dR3Jq%kn;>zT_hDjb87h4LK^ z?YjE*$cDC#{*s@k&o6Qyt4x{9?{(pg@LbJTa*^M-xFQoL4Mau0Fzb~2HM65f;frML zjH(rkmpqv~D{aE>KPu#%FS_ep|BMe(7K(TGN*Y+?m%r^RV;3+y<6CH6@+H$h$6Ha# zAYy_1@nx&5D+<>h+N8WYsbat9mAI$A!HTX6#q>E3^|IfWk$UKQV8PGCNMGkVlHya5 z4lRoko5C0M5n+!#w4E14=A2#W)Uf}Oi~NxbL5o<<&R>!4s+6J_d3~41S2@$PN19Fp zoAh(e|7@K!S16*%t#a_~vvpDhyRHu+9j8SL z7;L}KJb86(5mWe!Y0bqPKa203typt9=|ug(X?y3~5#_)8(9z`7>!k(x)3@F|;iU7q zF#mv;7QftFt|cBp%k97J4OxI3thx9LV*sA1i0gYFpTjxOB`8EQ|eA_XKl zrxnc6cDCI9CDHuhadHXE_Q~ePlO}UB!tEtk=2mQ=J^GhF{{?;a&xf7i&FH@|(YMl; zH8M4j`}Z?u1~2%T_1xsMdeG0kXE88vGr$_rpHFW10{Gk5&rGyUjSTcHtrnRWj5IR9 z8J&NHn^6@0kAW4Q18g6E*Z-8uz!2j51bZ51>;pyr`Cz}e`sWvJBrj)wazG%}pK|{F zB?IQ`lJQ0RDMTJ=qhQ%L-*XU(2KFBYn zHWy(h^T$5y|M}Y+?X48QBn5a;{WU-G>r*(t4sdt%CItpj*nm>SY=rY1hXXH2M9oNv z5JC{MA)~^~_}2tjMMe=MFl9)9djQpHp>kH^uz~{J(H5bUgL=g-3WT$(r@IqX3A{*k zDsX@AL?(GtugDyP(vM3S=b)5TL8V|q(KSs@pf@{4T23C zI9iBUiIRhg383JRw>Xo1F$U^Aln~U^Cy60Wu!lrd&V0nw&xuK1?g2poup~&8CW6rB z!vU55TKYeg3kW1Rdw?@IQ&%U3@EnPG!DN4T7k6jc=9fl@N9iPPg8SCdv4*lm(7@DB z!KG`c5JjX3!Z`h32@_)1h}3)pu6{`-v?x=HZ(RT{{6v**8GX0UEDok?4()( zwlVszgzpnAA;6jB?M4&wBpBn1eQbu`%fVGZ?Z{g!G#Fz z79BJ?!;&}xo&z}^t|9*;ljiUuh#+l=kZvUJjh-~zdOm{MPlR&!4)&oVV4_abN(arw z-FqVqiD=94LXMAX!2d{uKIrL14s`R`NY%v!kh+tIz_jBz>eiV=AW!#zKr+M`>U{(a zH0?w%FH)eh8!eU$QbR6Q0@IDLNWLV1I{SEe(Ml>%l@3H?NGM%l>P5ZAsQEI8SpH;R zAAc;yP;FGSZ`>z@1z{1Nx-K+9;b0@Mp8p>d&2Ed@Y&8)tATY?uiB>fwkd}?7$%0IJ zGp+i{BFwuqnH$M2q#(~gdeCS>JQt>`xP6$W3DIg>QRO)Mc>Z~Ohk7&5N2;Apl}S4m zpyB>LRob7460KPP>W6$B1jeH~twoKvjxHX_*PUv&!&Y{Gf3O@cn?9z$YmgV&J8(4o z&~kWm6nINl0az^apyl=G9BT>8_)*uSYv4mye>^E5^aXyX(tk{Ngn~gcVdMV$>(PYm zHpS0jqTUfu!Xz%#5`V)SwIm9i*eFsE=n8CT{B|Ki&=Yj{5R2qcpa{E*{8Te! zQ4xlaKOfAsAN;}myZz_C2BG{dnqo`=3uDgp@3+t-5I+OmN$_|f(!VG{=qkrj>L8fN zyE{|Gp+oLg>NxCuG1MxF&PC5rhyA@SjT#VD_l-IbyGMo^jG}*oi=s_1wgdGK!ptC2 zXrSFIE%$RPZ0oARIwmZ2jD2#$Jpr=HNLSy~QlIii45=&62gCpM2z+5FYV4C6J_{D$ zOwFv|XOzDYPZpdc0}IZR;Ri72j(u{&Prz?r%~RIX-I?qiKwcEMC6MyRJx=;BJm6RM zkn8=6APfw-;S8|wGdgpm_VdMMc30S;>>IGC2zDO($Mo zoXS!hoXPLZ9ADZ&_2aka080`q_Ak_7ET-jDSa`A=?d*#7fYBKt$N1M{Fw|Nt3Y0GF zUi^_2fUj$T#J!f=P`^kBZ)hEb^r^w{ge_%^zp)VN$Oz(4mXr|%i)K@%SaL*00c#fc zCu*;xl~h=GvfQf&)(n7yZw1`Hd=#^n`6>$3pXa^tO?B;pVb^EiU?)lc4KWxez=VK< zC&$r{rkxc z=e4B3Sdu+mem5L8O~E(Pq&SatKY(!?YB&Ec3;xUve?|j`Cr*1~vVicaJs)sSlE`lg*i5V4j$Pt(19YQ4P0>=tf%wTro zM5S#cM&XI-s>wNg6+%NKtWu(;uX4d7{c$z&Ms0%F^}2Mf{Vwnh4j4j2khZ+wK?{f{ zu>NiVvp!gDDOe2+6g$1~ct!-e*yc58@`J8fpbPDpKm7PkU%%WuE}`HsQx;%qz1I4Fk&v!W*R&^d7a7K<$Tbb*TGuoFhmZ)$Lae8kv#ET zKf_qD(FN*i2PQ*@j_PgHV0glOMS8ps11kjTi3Saao%pQZ$Mc-YM13GSGN1htSZ*0q z7xmm_ku-^T63t_n%YTAI%yZHHxiktNXzCM)Z#kc((?e=OTM%eNgGNvcF$z!A$;?N3 z$3Rpx_#4^=ez63kAWwq!bam=!-UX^|fhx3u=J8Zmc(NupWq2ooEMI6&R2EwzKFX5h zMaDN)?7scF86YbedO0fVQ8E=4o~)>;ya5oE8A9QU$|_31L%|BG2g#MZ$Su&zlQPlV zd1#(nDO9l=tR;o?Ov6+P*4Pf8w!c3q#0WOXuqh;dZJDNs-B|&(4FR+yg4H@e9~Q6T z!wSl?u`tpMHk3oC&FMr`G;^>fc?JK0)jqcdyCdpI#_j2-he;a~{Gk^Ad zt56sXTwyp6L4bM3XaOnfi3xOi8L!_2d%BeX6GM28;3NNCt@|gCc(#L0?R|LoZ)X9~ zHjJ{$-e+kN@g(LZFZQeg8$KL2)En1O0EsMz>59EvqF@A=*N_^))PL-g8?Js0AA={R zQiFL!8>4`j`C|;s!OzuGQ2wmI>XLkMqX*WS;xQ`^tp<`U59Ro-dXp**Pg_ps zC88n12_w?#TJT|nb017wt<$o}G0=^RW>MDEsf{|0QXIA&9Qlop?+^r>Kp?`p!`LS` zT=FqW)6vs2`F$!+4Et+{nYXJCAs%>>RrJ4`yljRes1{ePHK1x zxDlLS!Y_c;%;E+(oT`QQ2gi!2?shCWCSN5&*7*?gA@9W1rmc znJ?&o605y#7}T;Hz~ul&6PCR_MBwrD#(Iq!7mLPD@X&A43=9He0 z4ZE)ZI08mQyWhq4D2S-TU~7OQDp4#k`?k#~QmqN;ybD zW4i;aJ^VN38F`!e!xlQeX^Jei3TS|luZ{~SAw&2WJTXCSI(GL!j0uQAo2q}9lHwfX z1P5U7mIW}|?0O{3xd?27Wzc9-ef>sAqLhTWrQGY_3aqJ4fh078+whYTgq=~sx+~5! z&HA)~cKz<0{Da^=++b(4cKb$%QIw*vM%$_rwt41E$acjjCyuU6laNLu9-gqUmi;C$ zqY+m1&IeI8{wWRu4y7E-MqRF~C$@uq3c%nHyvIJd;RPZT7_bh$1G#+ZzVsR#C=`0> z>@fo7%no8W3`!Z8Rl33+x)_3tDv*I@$Xg}HBP{=%BN{IUvy5$dMx-}bm<$$1o1HeAf;0zV2G)ie$ z!%ZSTV+w&DYXKy*^Uqbqfd%^D8|%}N@?D(k;2!sFlPJPjlMX%xPmGHu$4_t<1~#af z6k;dtEL@7Vx3^E==pncOF|6B-7l+kxLt^-d8O$)T11`{*W1rmcZP~Q2b zuqb6=&AMBncMt|BhD?x!#*2zl6lLifg5Qpr9&()6+JiYnKy*v0qij5aQiLQt88KU0 zhT|!Scnl)YL@4zfO28f{_~)gI{GcBC(2B{LXBzT?+!Em@#e#HYCn_^cnM5?*bo#)bh0+l!K9RlJx1`0kxl#) z_y#**(cq@sj)M$@C3vTxK%A*Prcc+ouo0WhIYY~!j_cAv4TdKyQRHKM6tu}{7RoN= z-7}u06B0^OETPp@cte$jCylqLa$YM8oSpy_L7IX2%XpZs zCn+F6dm~K4h?+HJM|{U?n3#w_uMkFf0^e!y@Z`lE;&$Jz1ml$>CC*^dWF%F=y2z+J z3o;2e&%{i}(q!?YL=_f+Aso#|)G?}1$Ki>~Ua#Ds0ev?R?1$R!y*B}kYS%r$)m^0w zzMBs))OMb}G#k3njo&>#%1ZCiE?WA@Jr|N+*`dppL^6XEkK$ zD+jiNA%$Y|BK_icn*K&uigd=D@4su2Sc^(M@|P(Be=C5lh2|i?E)j6>fY+rgWP2rcVrHu|N`tHs#CfGR$$ z*IwX>;evo_L@AIHE+Y8v+6gwc{jTv}AfCXeSx<}(YrdGE};nUCsO6F5~?*{hqB&!f#f?=pn(xgHH+Hwb(vRCQ}6L2Wy ztjV)eKKY1kXcPGC9_R#U#d6?YKgx;`?UrD<@RQ}-9hbmUD@h4NnVO3Br z2Fg*J@35T+oKmnloCs7y2o%r> z$3D5?eLD!Kqmv_Ioi#sV7M4PvJ_BPL{AcWw8-9K_O(LGe3pXceW2-fp&?C@_7bX(` zNAqgp*7t_czyH*hjjhm1M`3qr!I(&_^$k<$qT)#vxRu^j48EF<^)CeK2Vl)fs5Ms~qDjP)xVG5WSP<%sEyJJ^O^y=*u}qs-V#A1>q$MN5CiV z!&e;f&0;v6h}%qJWoB1N&%a;gH2&=W$cq1zV8|>9xWiARh7;QnPNxe)W8K$ zfu=90@Q8cUp~pg3g`mSPkP~(80u$`Bv6r26j+l1l$Sj^IjhbkSl|{e2M!!7UNG@X|~sc&c)E+ zXx-T$6yVwtf#L}b$}s460--a3i^fm>9|X+NNiT7WJ2J7vp2VsRevZ1(C9npr%6~*W ziIScoSx>+xBgZxQ3C5`ez>PG*r$XAwi}Rq$OU5<%jj41n@noLvjndQtOF~Seh@K0< zxcK#U_a>VLc{!2&iOm_#KSc86!}sdue3lHIRu5T+tv&Wp|>^yg0mjwk%YMPIcDu=Pz4FFt1J(T&Xo z1Z)#Bu~T4?;F$5vk~d)F?I2eSLAFZKM&gNtS83U=0g;e}QF!lUIB1F6Y`<4ti0z7v zPqNFiPuv2bwGgsU?>)4bJ}jPC=j_8#*kS1z5E0PmTBb^sigh!h(Z8;c<3k}h?R5yP zXfvHtrwJWDI%CZwleg+l3DlfVo3fcsuB45`tGVBTTYEX7nfjsT3P{6et|KDCGyd+{ zrsU1Pj~Y{*LvCc}h~S0hvV~xSE;4+F2S@O|03VMhe(9nnyEG7f0HzaYCnJ#v=vG*; zp{D~E?@M~S5IV33w4f|v7+vxN*m$x{wRePIDTgC;4K!As^B_X|hv;ID5$brt0Se;S zZjw{1xed&n1IZB@D>=OBCgVvqVQU=`0?EuE8SNnL0YqR}!z1p?m^YJ_Z_4)vwb+&t zntrGU(*wm5>Y^w*G6RHmjvL$Gg%L1e2%@etd1%r_>{RJAu&OxX3d^?B!Nij(U#~T7 z2`po>LJUJ)U^-kXh}$p5t~k`j?m7&`+ZV=++U8t;YdK7Y7h6!eK`x5s|hy2(1B(TjOWxne$?{T zqqp=CxxJ8QtBq=mz-vu$a01KBcKn zhK%dNM#^Ny{WE=7Jh9IMhUKuMhaaFP$srzCI+clrrD?i1-*M98pWxo{!j#^pH*F$t zJmLMzUS9|Rwm3J0FGP4e2Q9WGc9AEX=D}`qB=V7|&u20pgh`|tG$HDO<^mJss?ZGlkp^*gq`p*2e2wQ zAsW-uV_hgzzP)_an+Vgya>EXY`y)fVIK@k(;;x7{_eYs zz7nWJ#Iy=8sk;E?g0UZswr1KBf#V5Rth&aX4GvQU=0Vw>D`>KVocw*@dMt08%^NJV z93CjTei(FXf^J!)FRd}202@y>`?{@DA_18UUo;plUrh^5#nN+rg%}A!$ZCag4V~Fd zx1bM8Db^Zx+@7AE69Q8s1~T+}X~Yhm*0iWZyKdM{UW8Ql&L0q~&ce|U2!&&x-0%@Q z0xl5_TgSETsV_YUkVg25kHN4hy_(B-+~~Dv+Lk5|>#*qze$Zg?^*CAy_6!G=VhD1M zD{UmDEisYl*Oz?a1KKSty+nxY5S=K8@c)P;`~Tf>B-}H`e0Ew()2%y@oZSI~qVYK- zXo7q^`A=?lIxPi*%mPhoLTiY@?8B1=L2o8mqzC=0awV=6(wzCtLzv70e#o z;5iDh+C`Ky)G6+vQNZY)3RU%{opT1XA<3D%k}@2LWKIN*Cwyy2fBJODNlwETjnT#V zG}zS70AhaQv}V#LZD`mH;5%p>oeGzrP;FQQjwih3;v0OL(|nG?9=dj&8WRcy9`yy+h*PTA_OfN0ZxLZtKYfkCgVvij=w3*0{Wcel(uwlJjLb*j#-QB=4x>?N~#NJa#~gs;#p` z*pjg^(+nIB4Xk8`3DNPSbH|^Y*9n2O9R__A9^pa&x5BRFr)#uVv;X-_Q$(Y7 zp~pnvc*3XpPS10PIPw^ldC*vL0$!ScJ0koRPTx2$(XSe}3ykgw!!X*U8@5jjk0)O0 zfzk&bc343Yp>#!s-PGu`M|jWgb}tfOFiX^-?3n$qgidT0gp4P7I$2Io8m3?*a27O{ zTsc7vj10fHBjhu?q3=^5mSFp;Xe?1aMK>8wvdTf$9&U)MoND<(b#I~SgR8NSL z*SHDuE@^#AYjoApkH!-%VDoOqF>t)|;|8&zJJiTyv4rZtKJ5v6s10;=WiiU`-V66w z5SwHi9Z$N8&7>=-FljggU*L~@a>Mt&pav(N;9OGdd~*VGIFJk-aqI(Es=TC0q?Cxw z>E5oMW@QOLVX!bdr!(p!08*RNE%t9ox(ce4Am>#XQ-{sz9=}0xzu)KZ`@KIp@b({F zA75C+68ra8V=~UOk=T?hZ->`ACkS-d#RBM*>;s&I{BM&Hl(7Q4fFA#U*> z$3D5?%~P4FnqtfbqZS|gCqkp&N#R<&8w?^25455&=@S#3CE?p;E0?3pMo7opp?gb@ zRRHstYwYxb@k|rmF|5%7ybWL)m}!iCa>IS+Q0JPEe8t8LGHM?9UkDAeKF)E;C-9bw z5UkOBA(M9k<%~BD*1k5ww+b?$XI_9jN_?yequoi6CVV^+^TU^W<&*?Kt0Fj|7=o;l zppC?{w2$2VmLx_7hHK#6Xi_tKF-@YrmwO3n_Yv?ulucHro2`h?UX`77XeU@%8+tpM9NdB%6{*E2@U=fS8Bg|r_6yj- z`tcT6`W__iXh%#pqMMA@j9T{3cGZAGm_vs_!)ozrD&Qbb4=iSj>HPT%VMp;*>~~oK zSxp}cWdeEGf)4&zj~s6ntT9xB&=jlK@O9PNesgC_#V6aHbR-EQpA2^O8C z##{mmpHd;jYyO>z6h2@UF~=|ec;hG3L|e9oJ*B3UpDuD$Y21&xFO^qXk0BgOIHE-9`Wu? zs2b+Mk3}its_Iqxuy~FUes*hiDfrhr_@ZX6ZlX>diyioKTb325w?O;N0>?mu-kD~4 z!FYm``TZUY0M`S!Xex92Hgzt3i(#Ej)H2s~FSx{d=pAS(Gjf*>CZ0?aePP*pKxP9H z9k`qBQAe7>qhr6H0455`D+24v;1(5z65zuHBV!-9`nH{Jwm!+bOc2LDx#7lLbb!a30n3+mo4&n&tO&a=@gA zJc-k1HXV%J`na~AfH1cbeudD@bC9r;fTfDV;1L7 zs5_Ved&Uoq(92cmVB*PKRVb#L1YP(6d{LPL>eP_%RxsS7zL-rpDr4)efy4EIOQ13@ z!^JU#Hue6)#FNS6xs)#xB;J898guF(8z4dk1qAwdx#J!Q$INM1qx9hh=o|u_Xx)!5 zqX&v7H0oBICp^Ky&vNOr|p`NtZS*?R3>>}_O@Py`z78sTAc0#DKV{f5r*Mc`G!*y>S31cZ!i7*

o{C?ZX^W1-wP-udl{ez_%EnC!o~uy>w8Q;QN3? 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 literal 0 HcmV?d00001 From cdf19430ef5fbab1877b40c3f8c62e30d05335c4 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 10 Mar 2015 19:01:11 +0000 Subject: [PATCH 20/69] Remove TrackInfo from the SampleExtractor interface. --- .../exoplayer/source/DefaultSampleSource.java | 14 +++++-- .../source/FrameworkSampleExtractor.java | 42 +++++++++---------- .../exoplayer/source/SampleExtractor.java | 22 ++++++---- 3 files changed, 43 insertions(+), 35 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/source/DefaultSampleSource.java b/library/src/main/java/com/google/android/exoplayer/source/DefaultSampleSource.java index ccad721abb..4775e72d87 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/DefaultSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/source/DefaultSampleSource.java @@ -62,9 +62,14 @@ public final class DefaultSampleSource implements SampleSource { if (sampleExtractor.prepare()) { prepared = true; - trackInfos = sampleExtractor.getTrackInfos(); - trackStates = new int[trackInfos.length]; - pendingDiscontinuities = new boolean[trackInfos.length]; + int trackCount = sampleExtractor.getTrackCount(); + trackStates = new int[trackCount]; + pendingDiscontinuities = new boolean[trackCount]; + trackInfos = new TrackInfo[trackCount]; + for (int track = 0; track < trackCount; track++) { + String mimeType = sampleExtractor.getMediaFormat(track).mimeType; + trackInfos[track] = new TrackInfo(mimeType, sampleExtractor.getDurationUs(track)); + } } return prepared; @@ -119,7 +124,8 @@ public final class DefaultSampleSource implements SampleSource { return NOTHING_READ; } if (trackStates[track] != TRACK_STATE_FORMAT_SENT) { - sampleExtractor.getTrackMediaFormat(track, formatHolder); + formatHolder.format = sampleExtractor.getMediaFormat(track); + formatHolder.drmInitData = sampleExtractor.getDrmInitData(track); trackStates[track] = TRACK_STATE_FORMAT_SENT; return FORMAT_READ; } diff --git a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java index e4ab4805c6..1d2d8a14ae 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java @@ -17,10 +17,8 @@ package com.google.android.exoplayer.source; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.MediaFormatHolder; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.SampleSource; -import com.google.android.exoplayer.TrackInfo; import com.google.android.exoplayer.TrackRenderer; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.Util; @@ -53,8 +51,6 @@ public final class FrameworkSampleExtractor implements SampleExtractor { private final MediaExtractor mediaExtractor; - private TrackInfo[] trackInfos; - /** * Instantiates a new sample extractor reading from the specified {@code uri}. * @@ -106,24 +102,9 @@ public final class FrameworkSampleExtractor implements SampleExtractor { mediaExtractor.setDataSource(fileDescriptor, fileDescriptorOffset, fileDescriptorLength); } - int trackCount = mediaExtractor.getTrackCount(); - trackInfos = new TrackInfo[trackCount]; - for (int i = 0; i < trackCount; i++) { - android.media.MediaFormat format = mediaExtractor.getTrackFormat(i); - long durationUs = format.containsKey(android.media.MediaFormat.KEY_DURATION) - ? format.getLong(android.media.MediaFormat.KEY_DURATION) : C.UNKNOWN_TIME_US; - String mime = format.getString(android.media.MediaFormat.KEY_MIME); - trackInfos[i] = new TrackInfo(mime, durationUs); - } - return true; } - @Override - public TrackInfo[] getTrackInfos() { - return trackInfos; - } - @Override public void selectTrack(int index) { mediaExtractor.selectTrack(index); @@ -151,10 +132,25 @@ public final class FrameworkSampleExtractor implements SampleExtractor { } @Override - public void getTrackMediaFormat(int track, MediaFormatHolder mediaFormatHolder) { - mediaFormatHolder.format = - MediaFormat.createFromFrameworkMediaFormatV16(mediaExtractor.getTrackFormat(track)); - mediaFormatHolder.drmInitData = Util.SDK_INT >= 18 ? getPsshInfoV18() : null; + public int getTrackCount() { + return mediaExtractor.getTrackCount(); + } + + @Override + public MediaFormat getMediaFormat(int track) { + return MediaFormat.createFromFrameworkMediaFormatV16(mediaExtractor.getTrackFormat(track)); + } + + @Override + public Map getDrmInitData(int track) { + return Util.SDK_INT >= 18 ? getPsshInfoV18() : null; + } + + @Override + public long getDurationUs(int track) { + android.media.MediaFormat format = mediaExtractor.getTrackFormat(track); + return format.containsKey(android.media.MediaFormat.KEY_DURATION) + ? format.getLong(android.media.MediaFormat.KEY_DURATION) : C.UNKNOWN_TIME_US; } @Override diff --git a/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java b/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java index 383aa80ce2..cc165bc387 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java @@ -16,19 +16,19 @@ package com.google.android.exoplayer.source; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.MediaFormatHolder; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.SampleSource; -import com.google.android.exoplayer.TrackInfo; import com.google.android.exoplayer.TrackRenderer; import java.io.IOException; +import java.util.Map; +import java.util.UUID; /** * Extractor for reading track metadata and samples stored in tracks. * *

Call {@link #prepare} until it returns {@code true}, then access track metadata via - * {@link #getTrackInfos} and {@link #getTrackMediaFormat}. + * {@link #getMediaFormat}. * *

Pass indices of tracks to read from to {@link #selectTrack}. A track can later be deselected * by calling {@link #deselectTrack}. It is safe to select/deselect tracks after reading sample @@ -46,9 +46,6 @@ public interface SampleExtractor { */ boolean prepare() throws IOException; - /** Returns track information about all tracks that can be selected. */ - TrackInfo[] getTrackInfos(); - /** Selects the track at {@code index} for reading sample data. */ void selectTrack(int index); @@ -75,8 +72,17 @@ public interface SampleExtractor { */ void seekTo(long positionUs); - /** Stores the {@link MediaFormat} of {@code track}. */ - void getTrackMediaFormat(int track, MediaFormatHolder mediaFormatHolder); + /** Returns the number of tracks, if {@link #prepare} has returned {@code true}. */ + int getTrackCount(); + + /** Returns the {@link MediaFormat} of {@code track}. */ + MediaFormat getMediaFormat(int track); + + /** Returns the DRM initialization data for {@code track}. */ + Map getDrmInitData(int track); + + /** Returns the duration of {@code track} in microseconds. */ + long getDurationUs(int track); /** * Reads the next sample in the track at index {@code track} into {@code sampleHolder}, returning From f3f9c845cd85d9b4cd15e523cbf7a20f26c5b555 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 10 Mar 2015 19:02:24 +0000 Subject: [PATCH 21/69] Add test for DefaultSampleSource. --- .../source/DefaultSampleSourceTest.java | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 library/src/test/java/com/google/android/exoplayer/source/DefaultSampleSourceTest.java diff --git a/library/src/test/java/com/google/android/exoplayer/source/DefaultSampleSourceTest.java b/library/src/test/java/com/google/android/exoplayer/source/DefaultSampleSourceTest.java new file mode 100644 index 0000000000..57a139e88c --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/source/DefaultSampleSourceTest.java @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.source; + +import static org.mockito.Matchers.anyInt; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.google.android.exoplayer.MediaFormat; +import com.google.android.exoplayer.MediaFormatHolder; +import com.google.android.exoplayer.SampleSource; +import com.google.android.exoplayer.util.MimeTypes; + +import junit.framework.TestCase; + +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +/** Tests for {@link DefaultSampleSource}. */ +public final class DefaultSampleSourceTest extends TestCase { + + private static final int RENDERER_COUNT = 2; + private static final MediaFormat FAKE_MEDIA_FORMAT = + MediaFormat.createFormatForMimeType(MimeTypes.AUDIO_AAC); + private DefaultSampleSource defaultSampleSource; + @Mock SampleExtractor mockSampleExtractor; + + @Override + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + + when(mockSampleExtractor.prepare()).thenReturn(true); + when(mockSampleExtractor.getTrackCount()).thenReturn(2); + when(mockSampleExtractor.getMediaFormat(anyInt())).thenReturn(FAKE_MEDIA_FORMAT); + + defaultSampleSource = new DefaultSampleSource(mockSampleExtractor, RENDERER_COUNT); + } + + public void testSourceReleasedWhenRenderersReleased() throws Exception { + // Given a prepared sample source + defaultSampleSource.prepare(); + + // When releasing it once, it is not released. + defaultSampleSource.release(); + verify(mockSampleExtractor, never()).release(); + + // When releasing RENDERER_COUNT times, it is released. + defaultSampleSource.release(); + verify(mockSampleExtractor).release(); + } + + public void testEnablingTracksAtStartDoesNotSeek() throws Exception { + // Given a prepared sample source + defaultSampleSource.prepare(); + + // When the first track is enabled at t=0, the sample extractor does not seek. + defaultSampleSource.enable(0, 0L); + verify(mockSampleExtractor, never()).seekTo(0); + + // When the second track is enabled at t=0, the sample extractor does not seek. + defaultSampleSource.enable(1, 0L); + verify(mockSampleExtractor, never()).seekTo(0); + } + + public void testEnablingTracksInMiddleDoesSeek() throws Exception { + // Given a prepared sample source + defaultSampleSource.prepare(); + + // When the first track is enabled at t!=0, the sample extractor does seek. + defaultSampleSource.enable(0, 1000L); + verify(mockSampleExtractor, times(1)).seekTo(1000L); + + // When the second track is enabled at t!=0, the sample extractor does seek. + defaultSampleSource.enable(1, 1000L); + verify(mockSampleExtractor, times(2)).seekTo(1000L); + } + + public void testEnablingTrackSelectsTrack() throws Exception { + // Given a prepared sample source + defaultSampleSource.prepare(); + + // When the first track is enabled, it selects the first track. + defaultSampleSource.enable(0, 0L); + verify(mockSampleExtractor).selectTrack(0); + } + + public void testReadDataInitiallyReadsFormat() throws Exception { + // Given a prepared sample source with the first track selected + defaultSampleSource.prepare(); + defaultSampleSource.enable(0, 0L); + + // A format is read. + MediaFormatHolder mediaFormatHolder = new MediaFormatHolder(); + assertEquals(SampleSource.FORMAT_READ, + defaultSampleSource.readData(0, 0, mediaFormatHolder, null, false)); + } + + public void testSeekAndReadDataReadsDiscontinuity() throws Exception { + // Given a prepared sample source with the first track selected + defaultSampleSource.prepare(); + defaultSampleSource.enable(0, 1L); + + // A discontinuity is read. + assertEquals( + SampleSource.DISCONTINUITY_READ, defaultSampleSource.readData(0, 0, null, null, false)); + } + +} From 489e99158f18f10c64acc3a76e3b47086b478498 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 10 Mar 2015 19:04:38 +0000 Subject: [PATCH 22/69] Remove getDurationUs from the SampleExtractor interface. Set the duration on the MediaFormat instead. --- .../google/android/exoplayer/MediaFormat.java | 56 +++++++++++++------ .../exoplayer/chunk/parser/Extractor.java | 6 -- .../parser/mp4/FragmentedMp4Extractor.java | 5 -- .../chunk/parser/webm/WebmExtractor.java | 23 +++----- .../exoplayer/mp4/CommonMp4AtomParsers.java | 27 ++++----- .../exoplayer/source/DefaultSampleSource.java | 5 +- .../source/FrameworkSampleExtractor.java | 8 --- .../exoplayer/source/SampleExtractor.java | 3 - .../android/exoplayer/MediaFormatTest.java | 4 +- 9 files changed, 66 insertions(+), 71 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaFormat.java b/library/src/main/java/com/google/android/exoplayer/MediaFormat.java index 5d1bf3945b..00db53fe2c 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaFormat.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaFormat.java @@ -40,6 +40,8 @@ public class MediaFormat { public final String mimeType; public final int maxInputSize; + public final long durationUs; + public final int width; public final int height; public final float pixelWidthHeightRatio; @@ -49,11 +51,11 @@ public class MediaFormat { public final int bitrate; + public final List initializationData; + private int maxWidth; private int maxHeight; - public final List initializationData; - // Lazy-initialized hashcode. private int hashCode; // Possibly-lazy-initialized framework media format. @@ -66,25 +68,38 @@ public class MediaFormat { public static MediaFormat createVideoFormat(String mimeType, int maxInputSize, int width, int height, List initializationData) { - return createVideoFormat(mimeType, maxInputSize, width, height, 1, initializationData); + return createVideoFormat( + mimeType, maxInputSize, C.UNKNOWN_TIME_US, width, height, initializationData); } - public static MediaFormat createVideoFormat(String mimeType, int maxInputSize, int width, - int height, float pixelWidthHeightRatio, List initializationData) { - return new MediaFormat(mimeType, maxInputSize, width, height, pixelWidthHeightRatio, NO_VALUE, - NO_VALUE, NO_VALUE, initializationData); + public static MediaFormat createVideoFormat(String mimeType, int maxInputSize, long durationUs, + int width, int height, List initializationData) { + return createVideoFormat( + mimeType, maxInputSize, durationUs, width, height, 1, initializationData); + } + + public static MediaFormat createVideoFormat(String mimeType, int maxInputSize, long durationUs, + int width, int height, float pixelWidthHeightRatio, List initializationData) { + return new MediaFormat(mimeType, maxInputSize, durationUs, width, height, pixelWidthHeightRatio, + NO_VALUE, NO_VALUE, NO_VALUE, initializationData); } public static MediaFormat createAudioFormat(String mimeType, int maxInputSize, int channelCount, int sampleRate, List initializationData) { - return new MediaFormat(mimeType, maxInputSize, NO_VALUE, NO_VALUE, NO_VALUE, channelCount, - sampleRate, NO_VALUE, initializationData); + return createAudioFormat( + mimeType, maxInputSize, C.UNKNOWN_TIME_US, channelCount, sampleRate, initializationData); } - public static MediaFormat createAudioFormat(String mimeType, int maxInputSize, int channelCount, - int sampleRate, int bitrate, List initializationData) { - return new MediaFormat(mimeType, maxInputSize, NO_VALUE, NO_VALUE, NO_VALUE, channelCount, - sampleRate, bitrate, initializationData); + public static MediaFormat createAudioFormat(String mimeType, int maxInputSize, long durationUs, + int channelCount, int sampleRate, List initializationData) { + return createAudioFormat( + mimeType, maxInputSize, durationUs, channelCount, sampleRate, NO_VALUE, initializationData); + } + + public static MediaFormat createAudioFormat(String mimeType, int maxInputSize, long durationUs, + int channelCount, int sampleRate, int bitrate, List initializationData) { + return new MediaFormat(mimeType, maxInputSize, durationUs, NO_VALUE, NO_VALUE, NO_VALUE, + channelCount, sampleRate, bitrate, initializationData); } public static MediaFormat createId3Format() { @@ -100,8 +115,8 @@ public class MediaFormat { } public static MediaFormat createFormatForMimeType(String mimeType) { - return new MediaFormat(mimeType, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, - NO_VALUE, null); + return new MediaFormat(mimeType, NO_VALUE, C.UNKNOWN_TIME_US, NO_VALUE, NO_VALUE, NO_VALUE, + NO_VALUE, NO_VALUE, NO_VALUE, null); } @TargetApi(16) @@ -123,15 +138,18 @@ public class MediaFormat { initializationData.add(data); buffer.flip(); } + durationUs = format.containsKey(android.media.MediaFormat.KEY_DURATION) + ? format.getLong(android.media.MediaFormat.KEY_DURATION) : C.UNKNOWN_TIME_US; maxWidth = NO_VALUE; maxHeight = NO_VALUE; } - private MediaFormat(String mimeType, int maxInputSize, int width, int height, + private MediaFormat(String mimeType, int maxInputSize, long durationUs, int width, int height, float pixelWidthHeightRatio, int channelCount, int sampleRate, int bitrate, List initializationData) { this.mimeType = mimeType; this.maxInputSize = maxInputSize; + this.durationUs = durationUs; this.width = width; this.height = height; this.pixelWidthHeightRatio = pixelWidthHeightRatio; @@ -169,6 +187,7 @@ public class MediaFormat { result = 31 * result + width; result = 31 * result + height; result = 31 * result + Float.floatToRawIntBits(pixelWidthHeightRatio); + result = 31 * result + (int) durationUs; result = 31 * result + maxWidth; result = 31 * result + maxHeight; result = 31 * result + channelCount; @@ -225,7 +244,7 @@ public class MediaFormat { public String toString() { return "MediaFormat(" + mimeType + ", " + maxInputSize + ", " + width + ", " + height + ", " + pixelWidthHeightRatio + ", " + channelCount + ", " + sampleRate + ", " + bitrate + ", " - + maxWidth + ", " + maxHeight + ")"; + + durationUs + ", " + maxWidth + ", " + maxHeight + ")"; } /** @@ -246,6 +265,9 @@ public class MediaFormat { for (int i = 0; i < initializationData.size(); i++) { format.setByteBuffer("csd-" + i, ByteBuffer.wrap(initializationData.get(i))); } + if (durationUs != C.UNKNOWN_TIME_US) { + format.setLong(android.media.MediaFormat.KEY_DURATION, durationUs); + } maybeSetMaxDimensionsV16(format); frameworkMediaFormat = format; } diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/Extractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/Extractor.java index d501e26bcb..3a84099d86 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/Extractor.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer.chunk.parser; -import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.ParserException; import com.google.android.exoplayer.SampleHolder; @@ -79,11 +78,6 @@ public interface Extractor { */ public MediaFormat getFormat(); - /** - * Returns the duration of the stream in microseconds, or {@link C#UNKNOWN_TIME_US} if unknown. - */ - public long getDurationUs(); - /** * Returns the pssh information parsed from the stream. * diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java index d6229cf805..da34f481e1 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java @@ -198,11 +198,6 @@ public final class FragmentedMp4Extractor implements Extractor { return track == null ? null : track.mediaFormat; } - @Override - public long getDurationUs() { - return track == null ? C.UNKNOWN_TIME_US : track.durationUs; - } - @Override public int read(NonBlockingInputStream inputStream, SampleHolder out) throws ParserException { diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java index ddf15e5610..a5826984ec 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java @@ -104,7 +104,7 @@ public final class WebmExtractor implements Extractor { private long segmentStartOffsetBytes = UNKNOWN; private long segmentEndOffsetBytes = UNKNOWN; private long timecodeScale = 1000000L; - private long durationUs = UNKNOWN; + private long durationUs = C.UNKNOWN_TIME_US; private int pixelWidth = UNKNOWN; private int pixelHeight = UNKNOWN; private int channelCount = UNKNOWN; @@ -181,11 +181,6 @@ public final class WebmExtractor implements Extractor { return format; } - @Override - public long getDurationUs() { - return durationUs == UNKNOWN ? C.UNKNOWN_TIME_US : durationUs; - } - @Override public Map getPsshInfo() { // TODO: Parse pssh data from Webm streams. @@ -463,8 +458,8 @@ public final class WebmExtractor implements Extractor { private void buildVideoFormat() throws ParserException { if (pixelWidth != UNKNOWN && pixelHeight != UNKNOWN && (format == null || format.width != pixelWidth || format.height != pixelHeight)) { - format = MediaFormat.createVideoFormat( - MimeTypes.VIDEO_VP9, MediaFormat.NO_VALUE, pixelWidth, pixelHeight, null); + format = MediaFormat.createVideoFormat(MimeTypes.VIDEO_VP9, MediaFormat.NO_VALUE, durationUs, + pixelWidth, pixelHeight, null); readResults |= RESULT_READ_INIT; } else if (format == null) { throw new ParserException("Unable to build format"); @@ -485,17 +480,15 @@ public final class WebmExtractor implements Extractor { && (format == null || format.channelCount != channelCount || format.sampleRate != sampleRate)) { if (CODEC_ID_VORBIS.equals(codecId)) { - format = MediaFormat.createAudioFormat( - MimeTypes.AUDIO_VORBIS, VORBIS_MAX_INPUT_SIZE, - channelCount, sampleRate, parseVorbisCodecPrivate()); + format = MediaFormat.createAudioFormat(MimeTypes.AUDIO_VORBIS, VORBIS_MAX_INPUT_SIZE, + durationUs, channelCount, sampleRate, parseVorbisCodecPrivate()); } else if (CODEC_ID_OPUS.equals(codecId)) { ArrayList opusInitializationData = new ArrayList(3); opusInitializationData.add(codecPrivate); opusInitializationData.add(ByteBuffer.allocate(Long.SIZE).putLong(codecDelayNs).array()); opusInitializationData.add(ByteBuffer.allocate(Long.SIZE).putLong(seekPreRollNs).array()); - format = MediaFormat.createAudioFormat( - MimeTypes.AUDIO_OPUS, OPUS_MAX_INPUT_SIZE, channelCount, sampleRate, - opusInitializationData); + format = MediaFormat.createAudioFormat(MimeTypes.AUDIO_OPUS, OPUS_MAX_INPUT_SIZE, + durationUs, channelCount, sampleRate, opusInitializationData); } readResults |= RESULT_READ_INIT; } else if (format == null) { @@ -512,7 +505,7 @@ public final class WebmExtractor implements Extractor { private void buildCues() throws ParserException { if (segmentStartOffsetBytes == UNKNOWN) { throw new ParserException("Segment start/end offsets unknown"); - } else if (durationUs == UNKNOWN) { + } else if (durationUs == C.UNKNOWN_TIME_US) { throw new ParserException("Duration unknown"); } else if (cuesSizeBytes == UNKNOWN) { throw new ParserException("Cues size unknown"); diff --git a/library/src/main/java/com/google/android/exoplayer/mp4/CommonMp4AtomParsers.java b/library/src/main/java/com/google/android/exoplayer/mp4/CommonMp4AtomParsers.java index 4443e573c9..0f9e754204 100644 --- a/library/src/main/java/com/google/android/exoplayer/mp4/CommonMp4AtomParsers.java +++ b/library/src/main/java/com/google/android/exoplayer/mp4/CommonMp4AtomParsers.java @@ -67,7 +67,7 @@ public final class CommonMp4AtomParsers { long mediaTimescale = parseMdhd(mdia.getLeafAtomOfType(Atom.TYPE_mdhd).data); Pair sampleDescriptions = - parseStsd(stbl.getLeafAtomOfType(Atom.TYPE_stsd).data); + parseStsd(stbl.getLeafAtomOfType(Atom.TYPE_stsd).data, durationUs); return new Track(id, trackType, mediaTimescale, durationUs, sampleDescriptions.first, sampleDescriptions.second); } @@ -321,7 +321,8 @@ public final class CommonMp4AtomParsers { return mdhd.readUnsignedInt(); } - private static Pair parseStsd(ParsableByteArray stsd) { + private static Pair parseStsd( + ParsableByteArray stsd, long durationUs) { stsd.setPosition(Mp4Util.FULL_ATOM_HEADER_SIZE); int numberOfEntries = stsd.readInt(); MediaFormat mediaFormat = null; @@ -334,19 +335,19 @@ public final class CommonMp4AtomParsers { if (childAtomType == Atom.TYPE_avc1 || childAtomType == Atom.TYPE_avc3 || childAtomType == Atom.TYPE_encv) { Pair avc = - parseAvcFromParent(stsd, childStartPosition, childAtomSize); + parseAvcFromParent(stsd, childStartPosition, childAtomSize, durationUs); mediaFormat = avc.first; trackEncryptionBoxes[i] = avc.second; } else if (childAtomType == Atom.TYPE_mp4a || childAtomType == Atom.TYPE_enca || childAtomType == Atom.TYPE_ac_3) { - Pair audioSampleEntry = - parseAudioSampleEntry(stsd, childAtomType, childStartPosition, childAtomSize); + Pair audioSampleEntry = parseAudioSampleEntry(stsd, + childAtomType, childStartPosition, childAtomSize, durationUs); mediaFormat = audioSampleEntry.first; trackEncryptionBoxes[i] = audioSampleEntry.second; } else if (childAtomType == Atom.TYPE_TTML) { mediaFormat = MediaFormat.createTtmlFormat(); } else if (childAtomType == Atom.TYPE_mp4v) { - mediaFormat = parseMp4vFromParent(stsd, childStartPosition, childAtomSize); + mediaFormat = parseMp4vFromParent(stsd, childStartPosition, childAtomSize, durationUs); } stsd.setPosition(childStartPosition + childAtomSize); } @@ -355,7 +356,7 @@ public final class CommonMp4AtomParsers { /** Returns the media format for an avc1 box. */ private static Pair parseAvcFromParent(ParsableByteArray parent, - int position, int size) { + int position, int size, long durationUs) { parent.setPosition(position + Mp4Util.ATOM_HEADER_SIZE); parent.skip(24); @@ -388,7 +389,7 @@ public final class CommonMp4AtomParsers { } MediaFormat format = MediaFormat.createVideoFormat(MimeTypes.VIDEO_H264, MediaFormat.NO_VALUE, - width, height, pixelWidthHeightRatio, initializationData); + durationUs, width, height, pixelWidthHeightRatio, initializationData); return Pair.create(format, trackEncryptionBox); } @@ -468,8 +469,8 @@ public final class CommonMp4AtomParsers { } /** Returns the media format for an mp4v box. */ - private static MediaFormat parseMp4vFromParent(ParsableByteArray parent, - int position, int size) { + private static MediaFormat parseMp4vFromParent(ParsableByteArray parent, int position, int size, + long durationUs) { parent.setPosition(position + Mp4Util.ATOM_HEADER_SIZE); parent.skip(24); @@ -492,11 +493,11 @@ public final class CommonMp4AtomParsers { } return MediaFormat.createVideoFormat( - MimeTypes.VIDEO_MP4V, MediaFormat.NO_VALUE, width, height, initializationData); + MimeTypes.VIDEO_MP4V, MediaFormat.NO_VALUE, durationUs, width, height, initializationData); } private static Pair parseAudioSampleEntry( - ParsableByteArray parent, int atomType, int position, int size) { + ParsableByteArray parent, int atomType, int position, int size, long durationUs) { parent.setPosition(position + Mp4Util.ATOM_HEADER_SIZE); parent.skip(16); int channelCount = parent.readUnsignedShort(); @@ -555,7 +556,7 @@ public final class CommonMp4AtomParsers { } MediaFormat format = MediaFormat.createAudioFormat( - mimeType, sampleSize, channelCount, sampleRate, bitrate, + mimeType, sampleSize, durationUs, channelCount, sampleRate, bitrate, initializationData == null ? null : Collections.singletonList(initializationData)); return Pair.create(format, trackEncryptionBox); } diff --git a/library/src/main/java/com/google/android/exoplayer/source/DefaultSampleSource.java b/library/src/main/java/com/google/android/exoplayer/source/DefaultSampleSource.java index 4775e72d87..2359a974f5 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/DefaultSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/source/DefaultSampleSource.java @@ -16,6 +16,7 @@ package com.google.android.exoplayer.source; import com.google.android.exoplayer.C; +import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.MediaFormatHolder; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.SampleSource; @@ -67,8 +68,8 @@ public final class DefaultSampleSource implements SampleSource { pendingDiscontinuities = new boolean[trackCount]; trackInfos = new TrackInfo[trackCount]; for (int track = 0; track < trackCount; track++) { - String mimeType = sampleExtractor.getMediaFormat(track).mimeType; - trackInfos[track] = new TrackInfo(mimeType, sampleExtractor.getDurationUs(track)); + MediaFormat mediaFormat = sampleExtractor.getMediaFormat(track); + trackInfos[track] = new TrackInfo(mediaFormat.mimeType, mediaFormat.durationUs); } } diff --git a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java index 1d2d8a14ae..c001668f66 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer.source; -import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.SampleSource; @@ -146,13 +145,6 @@ public final class FrameworkSampleExtractor implements SampleExtractor { return Util.SDK_INT >= 18 ? getPsshInfoV18() : null; } - @Override - public long getDurationUs(int track) { - android.media.MediaFormat format = mediaExtractor.getTrackFormat(track); - return format.containsKey(android.media.MediaFormat.KEY_DURATION) - ? format.getLong(android.media.MediaFormat.KEY_DURATION) : C.UNKNOWN_TIME_US; - } - @Override public int readSample(int track, SampleHolder sampleHolder) { int sampleTrack = mediaExtractor.getSampleTrackIndex(); diff --git a/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java b/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java index cc165bc387..09b9e90380 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java @@ -81,9 +81,6 @@ public interface SampleExtractor { /** Returns the DRM initialization data for {@code track}. */ Map getDrmInitData(int track); - /** Returns the duration of {@code track} in microseconds. */ - long getDurationUs(int track); - /** * Reads the next sample in the track at index {@code track} into {@code sampleHolder}, returning * {@link SampleSource#SAMPLE_READ} if it is available. diff --git a/library/src/test/java/com/google/android/exoplayer/MediaFormatTest.java b/library/src/test/java/com/google/android/exoplayer/MediaFormatTest.java index c9d50c43b0..6da52e50f9 100644 --- a/library/src/test/java/com/google/android/exoplayer/MediaFormatTest.java +++ b/library/src/test/java/com/google/android/exoplayer/MediaFormatTest.java @@ -42,9 +42,9 @@ public class MediaFormatTest extends TestCase { initData.add(initData2); testConversionToFrameworkFormatV16( - MediaFormat.createVideoFormat("video/xyz", 102400, 1280, 720, 1.5f, initData)); + MediaFormat.createVideoFormat("video/xyz", 102400, 1000L, 1280, 720, 1.5f, initData)); testConversionToFrameworkFormatV16( - MediaFormat.createAudioFormat("audio/xyz", 102400, 5, 44100, initData)); + MediaFormat.createAudioFormat("audio/xyz", 102400, 1000L, 5, 44100, initData)); } @TargetApi(16) From be103106cb46515a04833d803f44afc2ac963df0 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 10 Mar 2015 19:06:07 +0000 Subject: [PATCH 23/69] HLS: Better stream selection at start of playback. - Correctly handle bandwidth NO_ESTIMATE case. - Don't consider switching without a previous chunk. --- .../android/exoplayer/hls/HlsChunkSource.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index 6995a4beb5..151d392ccb 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -387,16 +387,24 @@ public class HlsChunkSource { private int getNextVariantIndex(TsChunk previousTsChunk, long playbackPositionUs) { clearStaleBlacklistedPlaylists(); + if (previousTsChunk == null) { + // Don't consider switching if we don't have a previous chunk. + return variantIndex; + } + long bitrateEstimate = bandwidthMeter.getBitrateEstimate(); + if (bitrateEstimate == BandwidthMeter.NO_ESTIMATE) { + // Don't consider switching if we don't have a bandwidth estimate. + return variantIndex; + } int idealVariantIndex = getVariantIndexForBandwdith( - (int) (bandwidthMeter.getBitrateEstimate() * BANDWIDTH_FRACTION)); + (int) (bitrateEstimate * BANDWIDTH_FRACTION)); if (idealVariantIndex == variantIndex) { // We're already using the ideal variant. return variantIndex; } // We're not using the ideal variant for the available bandwidth, but only switch if the // conditions are appropriate. - long bufferedPositionUs = previousTsChunk == null ? playbackPositionUs - : adaptiveMode == ADAPTIVE_MODE_SPLICE ? previousTsChunk.startTimeUs + long bufferedPositionUs = adaptiveMode == ADAPTIVE_MODE_SPLICE ? previousTsChunk.startTimeUs : previousTsChunk.endTimeUs; long bufferedUs = bufferedPositionUs - playbackPositionUs; if (mediaPlaylistBlacklistTimesMs[variantIndex] != 0 From 1ebaaaebd5ba35928efbfd47e04e885fcc516583 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 10 Mar 2015 19:07:19 +0000 Subject: [PATCH 24/69] Parse EXT-X-MEDIA tags with SUBTITLES type. Not yet used by anything. Issue: #151 --- .../exoplayer/hls/HlsMasterPlaylist.java | 4 +- .../android/exoplayer/hls/HlsParserUtil.java | 26 +++++--- .../exoplayer/hls/HlsPlaylistParser.java | 62 ++++++++++++++----- .../android/exoplayer/hls/Subtitle.java | 37 +++++++++++ 4 files changed, 106 insertions(+), 23 deletions(-) create mode 100644 library/src/main/java/com/google/android/exoplayer/hls/Subtitle.java diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsMasterPlaylist.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsMasterPlaylist.java index 0a2b008d2f..15c4784d10 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsMasterPlaylist.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsMasterPlaylist.java @@ -23,10 +23,12 @@ import java.util.List; public final class HlsMasterPlaylist extends HlsPlaylist { public final List variants; + public final List subtitles; - public HlsMasterPlaylist(String baseUri, List variants) { + public HlsMasterPlaylist(String baseUri, List variants, List subtitles) { super(baseUri, HlsPlaylist.TYPE_MASTER); this.variants = variants; + this.subtitles = subtitles; } } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsParserUtil.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsParserUtil.java index 366bab1178..e5cbe97897 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsParserUtil.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsParserUtil.java @@ -25,6 +25,8 @@ import java.util.regex.Pattern; */ /* package */ class HlsParserUtil { + private static final String BOOLEAN_YES = "YES"; + private HlsParserUtil() {} public static String parseStringAttr(String line, Pattern pattern, String tag) @@ -36,14 +38,6 @@ import java.util.regex.Pattern; throw new ParserException(String.format("Couldn't match %s tag in %s", tag, line)); } - public static String parseOptionalStringAttr(String line, Pattern pattern) { - Matcher matcher = pattern.matcher(line); - if (matcher.find() && matcher.groupCount() == 1) { - return matcher.group(1); - } - return null; - } - public static int parseIntAttr(String line, Pattern pattern, String tag) throws ParserException { return Integer.parseInt(parseStringAttr(line, pattern, tag)); @@ -54,4 +48,20 @@ import java.util.regex.Pattern; return Double.parseDouble(parseStringAttr(line, pattern, tag)); } + public static String parseOptionalStringAttr(String line, Pattern pattern) { + Matcher matcher = pattern.matcher(line); + if (matcher.find() && matcher.groupCount() == 1) { + return matcher.group(1); + } + return null; + } + + public static boolean parseOptionalBoolAttr(String line, Pattern pattern) { + Matcher matcher = pattern.matcher(line); + if (matcher.find() && matcher.groupCount() == 1) { + return BOOLEAN_YES.equals(matcher.group(1)); + } + return false; + } + } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java index 3fe3d15fd5..76db4d773e 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java @@ -37,12 +37,8 @@ import java.util.regex.Pattern; public final class HlsPlaylistParser implements NetworkLoadable.Parser { private static final String VERSION_TAG = "#EXT-X-VERSION"; - private static final String STREAM_INF_TAG = "#EXT-X-STREAM-INF"; - private static final String BANDWIDTH_ATTR = "BANDWIDTH"; - private static final String CODECS_ATTR = "CODECS"; - private static final String RESOLUTION_ATTR = "RESOLUTION"; - + private static final String MEDIA_TAG = "#EXT-X-MEDIA"; private static final String DISCONTINUITY_TAG = "#EXT-X-DISCONTINUITY"; private static final String MEDIA_DURATION_TAG = "#EXTINF"; private static final String MEDIA_SEQUENCE_TAG = "#EXT-X-MEDIA-SEQUENCE"; @@ -51,17 +47,29 @@ public final class HlsPlaylistParser implements NetworkLoadable.Parser variants = new ArrayList(); + ArrayList variants = new ArrayList(); + ArrayList subtitles = new ArrayList(); int bandwidth = 0; String[] codecs = null; int width = -1; int height = -1; int variantIndex = 0; + boolean expectingStreamInfUrl = false; String line; while (iterator.hasNext()) { line = iterator.next(); - if (line.startsWith(STREAM_INF_TAG)) { + if (line.startsWith(MEDIA_TAG)) { + String type = HlsParserUtil.parseStringAttr(line, TYPE_ATTR_REGEX, TYPE_ATTR); + if (SUBTITLES_TYPE.equals(type)) { + // We assume all subtitles belong to the same group. + String name = HlsParserUtil.parseStringAttr(line, NAME_ATTR_REGEX, NAME_ATTR); + String uri = HlsParserUtil.parseStringAttr(line, URI_ATTR_REGEX, URI_ATTR); + String language = HlsParserUtil.parseOptionalStringAttr(line, LANGUAGE_ATTR_REGEX); + boolean isDefault = HlsParserUtil.parseOptionalBoolAttr(line, DEFAULT_ATTR_REGEX); + boolean autoSelect = HlsParserUtil.parseOptionalBoolAttr(line, AUTOSELECT_ATTR_REGEX); + subtitles.add(new Subtitle(name, uri, language, isDefault, autoSelect)); + } else { + // TODO: Support other types of media tag. + } + } else if (line.startsWith(STREAM_INF_TAG)) { bandwidth = HlsParserUtil.parseIntAttr(line, BANDWIDTH_ATTR_REGEX, BANDWIDTH_ATTR); String codecsString = HlsParserUtil.parseOptionalStringAttr(line, CODECS_ATTR_REGEX); if (codecsString != null) { @@ -145,15 +176,18 @@ public final class HlsPlaylistParser implements NetworkLoadable.Parser Date: Tue, 10 Mar 2015 19:36:37 +0000 Subject: [PATCH 25/69] WebM Extractor support for Encrypted content. --- .../chunk/parser/webm/WebmExtractor.java | 157 ++++++++-- .../chunk/parser/webm/WebmExtractorTest.java | 287 +++++++++++++++--- 2 files changed, 370 insertions(+), 74 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java index a5826984ec..92dd9f610c 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java @@ -25,9 +25,13 @@ import com.google.android.exoplayer.upstream.NonBlockingInputStream; import com.google.android.exoplayer.util.LongArray; import com.google.android.exoplayer.util.MimeTypes; +import android.media.MediaCodec; +import android.media.MediaExtractor; + import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.Map; import java.util.UUID; import java.util.concurrent.TimeUnit; @@ -38,6 +42,8 @@ import java.util.concurrent.TimeUnit; *

diff --git a/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608TrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608TrackRenderer.java index 8e855bf730..664b549cf9 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608TrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608TrackRenderer.java @@ -317,6 +317,11 @@ public class Eia608TrackRenderer extends TrackRenderer implements Callback { case ClosedCaptionCtrl.CARRIAGE_RETURN: maybeAppendNewline(); return; + case ClosedCaptionCtrl.BACKSPACE: + if (captionStringBuilder.length() > 0) { + captionStringBuilder.setLength(captionStringBuilder.length() - 1); + } + return; } } From 8c1088559e85a07d0090c03ebf684e2ff52d2d21 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 10 Mar 2015 19:42:48 +0000 Subject: [PATCH 27/69] Generalize getPsshInfo to properly accomodate WebM. - Rather than returning a map, return a DrmInitData object, with mapped and non-mapped implementations. - Include a suitable mimeType to pass to the MediaDrm. Previously we were incorrectly passing the mimeType of the samples, where-as MediaDrm expects the container mimeType. Note that it doesn't matter whether the mimeType starts with "video" or "audio", hence using video mimeTypes everywhere. --- .../exoplayer/MediaCodecTrackRenderer.java | 7 +++-- .../android/exoplayer/MediaFormatHolder.java | 8 +++--- .../exoplayer/chunk/ChunkSampleSource.java | 2 +- .../exoplayer/chunk/ContainerMediaChunk.java | 25 +++++++++--------- .../android/exoplayer/chunk/MediaChunk.java | 10 +++---- .../chunk/SingleSampleMediaChunk.java | 6 ++--- .../exoplayer/chunk/parser/Extractor.java | 14 +++++----- .../parser/mp4/FragmentedMp4Extractor.java | 16 +++++++----- .../chunk/parser/webm/WebmExtractor.java | 15 +++++------ .../exoplayer/dash/DashChunkSource.java | 26 +++++++++++-------- .../exoplayer/drm/DrmSessionManager.java | 11 +++----- .../drm/StreamingDrmSessionManager.java | 7 +++-- .../SmoothStreamingChunkSource.java | 18 +++++++------ .../source/FrameworkSampleExtractor.java | 16 +++++++++--- .../exoplayer/source/SampleExtractor.java | 5 ++-- .../chunk/parser/webm/WebmExtractorTest.java | 15 ++++++----- 16 files changed, 101 insertions(+), 100 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index 405855df19..71dbda7fc8 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -16,6 +16,7 @@ package com.google.android.exoplayer; import com.google.android.exoplayer.MediaCodecUtil.DecoderQueryException; +import com.google.android.exoplayer.drm.DrmInitData; import com.google.android.exoplayer.drm.DrmSessionManager; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.Util; @@ -33,8 +34,6 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.UUID; /** * An abstract {@link TrackRenderer} that uses {@link MediaCodec} to decode samples for rendering. @@ -164,7 +163,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { protected final Handler eventHandler; private MediaFormat format; - private Map drmInitData; + private DrmInitData drmInitData; private MediaCodec codec; private boolean codecIsAdaptive; private ByteBuffer[] inputBuffers; @@ -281,7 +280,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { throw new ExoPlaybackException("Media requires a DrmSessionManager"); } if (!openedDrmSession) { - drmSessionManager.open(drmInitData, mimeType); + drmSessionManager.open(drmInitData); openedDrmSession = true; } int drmSessionState = drmSessionManager.getState(); diff --git a/library/src/main/java/com/google/android/exoplayer/MediaFormatHolder.java b/library/src/main/java/com/google/android/exoplayer/MediaFormatHolder.java index 621a0f7986..fef993b945 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaFormatHolder.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaFormatHolder.java @@ -15,8 +15,7 @@ */ package com.google.android.exoplayer; -import java.util.Map; -import java.util.UUID; +import com.google.android.exoplayer.drm.DrmInitData; /** * Holds a {@link MediaFormat} and corresponding drm scheme initialization data. @@ -28,9 +27,8 @@ public final class MediaFormatHolder { */ public MediaFormat format; /** - * Initialization data for each of the drm schemes supported by the media, keyed by scheme UUID. - * Null if the media is not encrypted. + * Initialization data for drm schemes supported by the media. Null if the media is not encrypted. */ - public Map drmInitData; + public DrmInitData drmInitData; } diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java b/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java index 78bb18f2b6..c50f3d7168 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java @@ -352,7 +352,7 @@ public class ChunkSampleSource implements SampleSource, Loader.Callback { if (mediaFormat != null && !mediaFormat.equals(downstreamMediaFormat, true)) { chunkSource.getMaxVideoDimensions(mediaFormat); formatHolder.format = mediaFormat; - formatHolder.drmInitData = mediaChunk.getPsshInfo(); + formatHolder.drmInitData = mediaChunk.getDrmInitData(); downstreamMediaFormat = mediaFormat; return FORMAT_READ; } diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/ContainerMediaChunk.java b/library/src/main/java/com/google/android/exoplayer/chunk/ContainerMediaChunk.java index a3eefa9b5c..b19fd190af 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/ContainerMediaChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/ContainerMediaChunk.java @@ -19,14 +19,12 @@ import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.ParserException; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.chunk.parser.Extractor; +import com.google.android.exoplayer.drm.DrmInitData; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.upstream.DataSpec; import com.google.android.exoplayer.upstream.NonBlockingInputStream; import com.google.android.exoplayer.util.Assertions; -import java.util.Map; -import java.util.UUID; - /** * A {@link MediaChunk} extracted from a container. */ @@ -38,7 +36,7 @@ public final class ContainerMediaChunk extends MediaChunk { private boolean prepared; private MediaFormat mediaFormat; - private Map psshInfo; + private DrmInitData drmInitData; /** * @deprecated Use the other constructor, passing null as {@code psshInfo}. @@ -60,8 +58,9 @@ public final class ContainerMediaChunk extends MediaChunk { * @param endTimeUs The end time of the media contained by the chunk, in microseconds. * @param nextChunkIndex The index of the next chunk, or -1 if this is the last chunk. * @param extractor The extractor that will be used to extract the samples. - * @param psshInfo Pssh data. May be null if pssh data is present within the stream, meaning it - * can be obtained directly from {@code extractor}, or if no pssh data is required. + * @param drmInitData DRM initialization data. May be null if DRM initialization data is present + * within the stream, meaning it can be obtained directly from {@code extractor}, or if no + * DRM initialization data is required. * @param maybeSelfContained Set to true if this chunk might be self contained, meaning it might * contain a moov atom defining the media format of the chunk. This parameter can always be * safely set to true. Setting to false where the chunk is known to not be self contained may @@ -70,12 +69,12 @@ public final class ContainerMediaChunk extends MediaChunk { */ public ContainerMediaChunk(DataSource dataSource, DataSpec dataSpec, Format format, int trigger, long startTimeUs, long endTimeUs, int nextChunkIndex, Extractor extractor, - Map psshInfo, boolean maybeSelfContained, long sampleOffsetUs) { + DrmInitData drmInitData, boolean maybeSelfContained, long sampleOffsetUs) { super(dataSource, dataSpec, format, trigger, startTimeUs, endTimeUs, nextChunkIndex); this.extractor = extractor; this.maybeSelfContained = maybeSelfContained; this.sampleOffsetUs = sampleOffsetUs; - this.psshInfo = psshInfo; + this.drmInitData = drmInitData; } @Override @@ -111,9 +110,9 @@ public final class ContainerMediaChunk extends MediaChunk { } if (prepared) { mediaFormat = extractor.getFormat(); - Map extractorPsshInfo = extractor.getPsshInfo(); - if (extractorPsshInfo != null) { - psshInfo = extractorPsshInfo; + DrmInitData extractorDrmInitData = extractor.getDrmInitData(); + if (extractorDrmInitData != null) { + drmInitData = extractorDrmInitData; } } } @@ -145,8 +144,8 @@ public final class ContainerMediaChunk extends MediaChunk { } @Override - public Map getPsshInfo() { - return psshInfo; + public DrmInitData getDrmInitData() { + return drmInitData; } } diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/MediaChunk.java b/library/src/main/java/com/google/android/exoplayer/chunk/MediaChunk.java index e03a529d8c..2119272f13 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/MediaChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/MediaChunk.java @@ -18,12 +18,10 @@ package com.google.android.exoplayer.chunk; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.ParserException; import com.google.android.exoplayer.SampleHolder; +import com.google.android.exoplayer.drm.DrmInitData; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.upstream.DataSpec; -import java.util.Map; -import java.util.UUID; - /** * An abstract base class for {@link Chunk}s that contain media samples. */ @@ -129,12 +127,12 @@ public abstract class MediaChunk extends Chunk { public abstract MediaFormat getMediaFormat(); /** - * Returns the pssh information associated with the chunk. + * Returns the DRM initialization data associated with the chunk. *

* Should only be called after the chunk has been successfully prepared. * - * @return The pssh information. + * @return The DRM initialization data. */ - public abstract Map getPsshInfo(); + public abstract DrmInitData getDrmInitData(); } diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleMediaChunk.java b/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleMediaChunk.java index f097d9ee32..dde49ca6ff 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleMediaChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/SingleSampleMediaChunk.java @@ -17,14 +17,12 @@ package com.google.android.exoplayer.chunk; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; +import com.google.android.exoplayer.drm.DrmInitData; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.upstream.DataSpec; import com.google.android.exoplayer.upstream.NonBlockingInputStream; import com.google.android.exoplayer.util.Assertions; -import java.util.Map; -import java.util.UUID; - /** * A {@link MediaChunk} containing a single sample. */ @@ -132,7 +130,7 @@ public class SingleSampleMediaChunk extends MediaChunk { } @Override - public Map getPsshInfo() { + public DrmInitData getDrmInitData() { return null; } diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/Extractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/Extractor.java index 3a84099d86..7f4264ea15 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/Extractor.java @@ -18,11 +18,9 @@ package com.google.android.exoplayer.chunk.parser; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.ParserException; import com.google.android.exoplayer.SampleHolder; +import com.google.android.exoplayer.drm.DrmInitData; import com.google.android.exoplayer.upstream.NonBlockingInputStream; -import java.util.Map; -import java.util.UUID; - /** * Facilitates extraction of media samples from a container format. */ @@ -42,7 +40,7 @@ public interface Extractor { public static final int RESULT_READ_SAMPLE = 4; /** * Initialization data was read. The parsed data can be read using {@link #getFormat()} and - * {@link #getPsshInfo}. + * {@link #getDrmInitData()}. */ public static final int RESULT_READ_INIT = 8; /** @@ -79,12 +77,12 @@ public interface Extractor { public MediaFormat getFormat(); /** - * Returns the pssh information parsed from the stream. + * Returns DRM initialization data parsed from the stream. * - * @return The pssh information. May be null if pssh data has yet to be parsed, or if the stream - * does not contain any pssh data. + * @return The DRM initialization data. May be null if the initialization data has yet to be + * parsed, or if the stream does not contain any DRM initialization data. */ - public Map getPsshInfo(); + public DrmInitData getDrmInitData(); /** * Consumes data from a {@link NonBlockingInputStream}. diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java index da34f481e1..a6a95cd8d7 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java @@ -21,6 +21,7 @@ import com.google.android.exoplayer.ParserException; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.chunk.parser.Extractor; import com.google.android.exoplayer.chunk.parser.SegmentIndex; +import com.google.android.exoplayer.drm.DrmInitData; import com.google.android.exoplayer.mp4.Atom; import com.google.android.exoplayer.mp4.Atom.ContainerAtom; import com.google.android.exoplayer.mp4.Atom.LeafAtom; @@ -28,6 +29,7 @@ import com.google.android.exoplayer.mp4.CommonMp4AtomParsers; import com.google.android.exoplayer.mp4.Mp4Util; import com.google.android.exoplayer.mp4.Track; import com.google.android.exoplayer.upstream.NonBlockingInputStream; +import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableByteArray; import com.google.android.exoplayer.util.Util; @@ -38,10 +40,8 @@ import android.media.MediaExtractor; import java.nio.ByteBuffer; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.Stack; import java.util.UUID; @@ -145,7 +145,7 @@ public final class FragmentedMp4Extractor implements Extractor { private int lastSyncSampleIndex; // Data parsed from moov and sidx atoms - private final HashMap psshData; + private DrmInitData.Mapped drmInitData; private SegmentIndex segmentIndex; private Track track; private DefaultSampleValues extendsDefaults; @@ -165,7 +165,6 @@ public final class FragmentedMp4Extractor implements Extractor { extendedTypeScratch = new byte[16]; containerAtoms = new Stack(); fragmentRun = new TrackFragment(); - psshData = new HashMap(); } /** @@ -179,8 +178,8 @@ public final class FragmentedMp4Extractor implements Extractor { } @Override - public Map getPsshInfo() { - return psshData.isEmpty() ? null : psshData; + public DrmInitData getDrmInitData() { + return drmInitData; } @Override @@ -370,7 +369,10 @@ public final class FragmentedMp4Extractor implements Extractor { int dataSize = psshAtom.readInt(); byte[] data = new byte[dataSize]; psshAtom.readBytes(data, 0, dataSize); - psshData.put(uuid, data); + if (drmInitData == null) { + drmInitData = new DrmInitData.Mapped(MimeTypes.VIDEO_MP4); + } + drmInitData.put(uuid, data); } } ContainerAtom mvex = moov.getContainerAtomOfType(Atom.TYPE_mvex); diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java index 92dd9f610c..cb6c765708 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java @@ -21,19 +21,18 @@ import com.google.android.exoplayer.ParserException; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.chunk.parser.Extractor; import com.google.android.exoplayer.chunk.parser.SegmentIndex; +import com.google.android.exoplayer.drm.DrmInitData; import com.google.android.exoplayer.upstream.NonBlockingInputStream; import com.google.android.exoplayer.util.LongArray; import com.google.android.exoplayer.util.MimeTypes; +import android.annotation.SuppressLint; import android.media.MediaCodec; import android.media.MediaExtractor; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; import java.util.concurrent.TimeUnit; /** @@ -111,7 +110,7 @@ public final class WebmExtractor implements Extractor { private final EbmlReader reader; private final byte[] simpleBlockTimecodeAndFlags = new byte[3]; - private final HashMap psshInfo = new HashMap(); + private DrmInitData.Universal drmInitData; private SampleHolder sampleHolder; private int readResults; @@ -199,8 +198,8 @@ public final class WebmExtractor implements Extractor { } @Override - public Map getPsshInfo() { - return psshInfo.isEmpty() ? null : psshInfo; + public DrmInitData getDrmInitData() { + return drmInitData; } /* package */ int getElementType(int id) { @@ -296,8 +295,7 @@ public final class WebmExtractor implements Extractor { if (encryptionKeyId == null) { throw new ParserException("Encrypted Track found but ContentEncKeyID was not found"); } - // Widevine. - psshInfo.put(new UUID(0xEDEF8BA979D64ACEL, 0xA3C827DCD51D21EDL), encryptionKeyId); + drmInitData = new DrmInitData.Universal(MimeTypes.VIDEO_WEBM, encryptionKeyId); return true; case ID_AUDIO: isAudioTrack = true; @@ -427,6 +425,7 @@ public final class WebmExtractor implements Extractor { return true; } + @SuppressLint("InlinedApi") /* package */ boolean onBinaryElement( int id, long elementOffsetBytes, int headerSizeBytes, int contentsSizeBytes, NonBlockingInputStream inputStream) throws ParserException { diff --git a/library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java b/library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java index 412c645eb4..dc1d7fb26f 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java @@ -39,6 +39,7 @@ import com.google.android.exoplayer.dash.mpd.MediaPresentationDescription; import com.google.android.exoplayer.dash.mpd.Period; import com.google.android.exoplayer.dash.mpd.RangedUri; import com.google.android.exoplayer.dash.mpd.Representation; +import com.google.android.exoplayer.drm.DrmInitData; import com.google.android.exoplayer.text.webvtt.WebvttParser; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.upstream.DataSpec; @@ -54,8 +55,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.UUID; /** * An {@link ChunkSource} for DASH streams. @@ -96,7 +95,7 @@ public class DashChunkSource implements ChunkSource { private final ManifestFetcher manifestFetcher; private final int adaptationSetIndex; private final int[] representationIndices; - private final Map psshInfo; + private final DrmInitData drmInitData; private MediaPresentationDescription currentManifest; private boolean finishedCurrentManifest; @@ -190,7 +189,7 @@ public class DashChunkSource implements ChunkSource { this.evaluation = new Evaluation(); this.headerBuilder = new StringBuilder(); - psshInfo = getPsshInfo(currentManifest, adaptationSetIndex); + drmInitData = getDrmInitData(currentManifest, adaptationSetIndex); Representation[] representations = getFilteredRepresentations(currentManifest, adaptationSetIndex, representationIndices); long periodDurationUs = (representations[0].periodDurationMs == TrackRenderer.UNKNOWN_TIME_US) @@ -407,7 +406,7 @@ public class DashChunkSource implements ChunkSource { // Do nothing. } - private boolean mimeTypeIsWebm(String mimeType) { + private static boolean mimeTypeIsWebm(String mimeType) { return mimeType.startsWith(MimeTypes.VIDEO_WEBM) || mimeType.startsWith(MimeTypes.AUDIO_WEBM); } @@ -475,8 +474,8 @@ public class DashChunkSource implements ChunkSource { startTimeUs, endTimeUs, nextAbsoluteSegmentNum, null, representationHolder.vttHeader); } else { return new ContainerMediaChunk(dataSource, dataSpec, representation.format, trigger, - startTimeUs, endTimeUs, nextAbsoluteSegmentNum, representationHolder.extractor, psshInfo, - false, presentationTimeOffsetUs); + startTimeUs, endTimeUs, nextAbsoluteSegmentNum, representationHolder.extractor, + drmInitData, false, presentationTimeOffsetUs); } } @@ -529,19 +528,24 @@ public class DashChunkSource implements ChunkSource { } } - private static Map getPsshInfo(MediaPresentationDescription manifest, + private static DrmInitData getDrmInitData(MediaPresentationDescription manifest, int adaptationSetIndex) { AdaptationSet adaptationSet = manifest.periods.get(0).adaptationSets.get(adaptationSetIndex); + String drmInitMimeType = mimeTypeIsWebm(adaptationSet.representations.get(0).format.mimeType) + ? MimeTypes.VIDEO_WEBM : MimeTypes.VIDEO_MP4; if (adaptationSet.contentProtections.isEmpty()) { return null; } else { - Map psshInfo = new HashMap(); + DrmInitData.Mapped drmInitData = null; for (ContentProtection contentProtection : adaptationSet.contentProtections) { if (contentProtection.uuid != null && contentProtection.data != null) { - psshInfo.put(contentProtection.uuid, contentProtection.data); + if (drmInitData == null) { + drmInitData = new DrmInitData.Mapped(drmInitMimeType); + } + drmInitData.put(contentProtection.uuid, contentProtection.data); } } - return psshInfo.isEmpty() ? null : psshInfo; + return drmInitData; } } diff --git a/library/src/main/java/com/google/android/exoplayer/drm/DrmSessionManager.java b/library/src/main/java/com/google/android/exoplayer/drm/DrmSessionManager.java index 3bdfae9d12..a5e78ab008 100644 --- a/library/src/main/java/com/google/android/exoplayer/drm/DrmSessionManager.java +++ b/library/src/main/java/com/google/android/exoplayer/drm/DrmSessionManager.java @@ -18,9 +18,6 @@ package com.google.android.exoplayer.drm; import android.annotation.TargetApi; import android.media.MediaCrypto; -import java.util.Map; -import java.util.UUID; - /** * Manages a DRM session. */ @@ -36,7 +33,7 @@ public interface DrmSessionManager { */ public static final int STATE_CLOSED = 1; /** - * The session is being opened (i.e. {@link #open(Map, String)} has been called, but the session + * The session is being opened (i.e. {@link #open(DrmInitData)} has been called, but the session * is not yet open). */ public static final int STATE_OPENING = 2; @@ -52,11 +49,9 @@ public interface DrmSessionManager { /** * Opens the session, possibly asynchronously. * - * @param drmInitData Initialization data for the drm schemes supported by the media, keyed by - * scheme UUID. - * @param mimeType The mimeType of the media. + * @param drmInitData DRM initialization data. */ - void open(Map drmInitData, String mimeType); + void open(DrmInitData drmInitData); /** * Closes the session. diff --git a/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java b/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java index 866c5f96ef..2e752ba70d 100644 --- a/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java +++ b/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java @@ -31,7 +31,6 @@ import android.os.Looper; import android.os.Message; import java.util.HashMap; -import java.util.Map; import java.util.UUID; /** @@ -168,7 +167,7 @@ public class StreamingDrmSessionManager implements DrmSessionManager { } @Override - public void open(Map psshData, String mimeType) { + public void open(DrmInitData drmInitData) { if (++openCount != 1) { return; } @@ -178,8 +177,8 @@ public class StreamingDrmSessionManager implements DrmSessionManager { postRequestHandler = new PostRequestHandler(requestHandlerThread.getLooper()); } if (this.schemePsshData == null) { - this.mimeType = mimeType; - schemePsshData = psshData.get(uuid); + mimeType = drmInitData.mimeType; + schemePsshData = drmInitData.get(uuid); if (schemePsshData == null) { onError(new IllegalStateException("Media does not support uuid: " + uuid)); return; diff --git a/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingChunkSource.java b/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingChunkSource.java index 6e04658ef9..9e9cb92bae 100644 --- a/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingChunkSource.java @@ -30,6 +30,7 @@ import com.google.android.exoplayer.chunk.MediaChunk; import com.google.android.exoplayer.chunk.parser.Extractor; import com.google.android.exoplayer.chunk.parser.mp4.FragmentedMp4Extractor; import com.google.android.exoplayer.chunk.parser.mp4.TrackEncryptionBox; +import com.google.android.exoplayer.drm.DrmInitData; import com.google.android.exoplayer.mp4.Track; import com.google.android.exoplayer.smoothstreaming.SmoothStreamingManifest.ProtectionElement; import com.google.android.exoplayer.smoothstreaming.SmoothStreamingManifest.StreamElement; @@ -38,6 +39,7 @@ import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.upstream.DataSpec; import com.google.android.exoplayer.util.CodecSpecificDataUtil; import com.google.android.exoplayer.util.ManifestFetcher; +import com.google.android.exoplayer.util.MimeTypes; import android.net.Uri; import android.os.SystemClock; @@ -48,8 +50,6 @@ import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.Map; -import java.util.UUID; /** * An {@link ChunkSource} for SmoothStreaming. @@ -71,7 +71,7 @@ public class SmoothStreamingChunkSource implements ChunkSource { private final int maxHeight; private final SparseArray extractors; - private final Map psshInfo; + private final DrmInitData drmInitData; private final SmoothStreamingFormat[] formats; private SmoothStreamingManifest currentManifest; @@ -143,9 +143,11 @@ public class SmoothStreamingChunkSource implements ChunkSource { byte[] keyId = getKeyId(protectionElement.data); trackEncryptionBoxes = new TrackEncryptionBox[1]; trackEncryptionBoxes[0] = new TrackEncryptionBox(true, INITIALIZATION_VECTOR_SIZE, keyId); - psshInfo = Collections.singletonMap(protectionElement.uuid, protectionElement.data); + DrmInitData.Mapped drmInitData = new DrmInitData.Mapped(MimeTypes.VIDEO_MP4); + drmInitData.put(protectionElement.uuid, protectionElement.data); + this.drmInitData = drmInitData; } else { - psshInfo = null; + drmInitData = null; } int trackCount = trackIndices != null ? trackIndices.length : streamElement.tracks.length; @@ -299,7 +301,7 @@ public class SmoothStreamingChunkSource implements ChunkSource { Uri uri = streamElement.buildRequestUri(selectedFormat.trackIndex, chunkIndex); Chunk mediaChunk = newMediaChunk(selectedFormat, uri, null, - extractors.get(Integer.parseInt(selectedFormat.id)), psshInfo, dataSource, + extractors.get(Integer.parseInt(selectedFormat.id)), drmInitData, dataSource, currentAbsoluteChunkIndex, isLastChunk, chunkStartTimeUs, nextChunkStartTimeUs, 0); out.chunk = mediaChunk; } @@ -365,7 +367,7 @@ public class SmoothStreamingChunkSource implements ChunkSource { } private static MediaChunk newMediaChunk(Format formatInfo, Uri uri, String cacheKey, - Extractor extractor, Map psshInfo, DataSource dataSource, int chunkIndex, + Extractor extractor, DrmInitData drmInitData, DataSource dataSource, int chunkIndex, boolean isLast, long chunkStartTimeUs, long nextChunkStartTimeUs, int trigger) { int nextChunkIndex = isLast ? -1 : chunkIndex + 1; long nextStartTimeUs = isLast ? -1 : nextChunkStartTimeUs; @@ -374,7 +376,7 @@ public class SmoothStreamingChunkSource implements ChunkSource { // In SmoothStreaming each chunk contains sample timestamps relative to the start of the chunk. // To convert them the absolute timestamps, we need to set sampleOffsetUs to -chunkStartTimeUs. return new ContainerMediaChunk(dataSource, dataSpec, formatInfo, trigger, chunkStartTimeUs, - nextStartTimeUs, nextChunkIndex, extractor, psshInfo, false, -chunkStartTimeUs); + nextStartTimeUs, nextChunkIndex, extractor, drmInitData, false, -chunkStartTimeUs); } private static byte[] getKeyId(byte[] initData) { diff --git a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java index c001668f66..6905ffe1ce 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java @@ -19,7 +19,9 @@ import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.SampleSource; import com.google.android.exoplayer.TrackRenderer; +import com.google.android.exoplayer.drm.DrmInitData; import com.google.android.exoplayer.util.Assertions; +import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.Util; import android.annotation.TargetApi; @@ -141,8 +143,8 @@ public final class FrameworkSampleExtractor implements SampleExtractor { } @Override - public Map getDrmInitData(int track) { - return Util.SDK_INT >= 18 ? getPsshInfoV18() : null; + public DrmInitData getDrmInitData(int track) { + return Util.SDK_INT >= 18 ? getDrmInitDataV18() : null; } @Override @@ -176,9 +178,15 @@ public final class FrameworkSampleExtractor implements SampleExtractor { } @TargetApi(18) - private Map getPsshInfoV18() { + private DrmInitData getDrmInitDataV18() { + // MediaExtractor only supports psshInfo for MP4, so it's ok to hard code the mimeType here. Map psshInfo = mediaExtractor.getPsshInfo(); - return (psshInfo == null || psshInfo.isEmpty()) ? null : psshInfo; + if (psshInfo == null || psshInfo.isEmpty()) { + return null; + } + DrmInitData.Mapped drmInitData = new DrmInitData.Mapped(MimeTypes.VIDEO_MP4); + drmInitData.putAll(psshInfo); + return drmInitData; } } diff --git a/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java b/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java index 09b9e90380..88c516f04a 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/source/SampleExtractor.java @@ -19,10 +19,9 @@ import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.SampleSource; import com.google.android.exoplayer.TrackRenderer; +import com.google.android.exoplayer.drm.DrmInitData; import java.io.IOException; -import java.util.Map; -import java.util.UUID; /** * Extractor for reading track metadata and samples stored in tracks. @@ -79,7 +78,7 @@ public interface SampleExtractor { MediaFormat getMediaFormat(int track); /** Returns the DRM initialization data for {@code track}. */ - Map getDrmInitData(int track); + DrmInitData getDrmInitData(int track); /** * Reads the next sample in the track at index {@code track} into {@code sampleHolder}, returning diff --git a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java index d96151695f..52bb7de792 100644 --- a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java +++ b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java @@ -20,10 +20,12 @@ import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.ParserException; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.chunk.parser.SegmentIndex; +import com.google.android.exoplayer.drm.DrmInitData; import com.google.android.exoplayer.upstream.ByteArrayNonBlockingInputStream; import com.google.android.exoplayer.upstream.NonBlockingInputStream; import com.google.android.exoplayer.util.MimeTypes; +import android.annotation.SuppressLint; import android.media.MediaCodec; import android.media.MediaExtractor; import android.test.InstrumentationTestCase; @@ -31,7 +33,6 @@ import android.test.InstrumentationTestCase; import java.io.IOException; import java.nio.ByteBuffer; import java.util.Arrays; -import java.util.Map; import java.util.UUID; public class WebmExtractorTest extends InstrumentationTestCase { @@ -56,6 +57,7 @@ public class WebmExtractorTest extends InstrumentationTestCase { private static final int TEST_VORBIS_BOOKS_SIZE = 4140; private static final byte[] TEST_ENCRYPTION_KEY_ID = { 0x00, 0x01, 0x02, 0x03 }; private static final UUID WIDEVINE_UUID = new UUID(0xEDEF8BA979D64ACEL, 0xA3C827DCD51D21EDL); + private static final UUID ZERO_UUID = new UUID(0, 0); // First 8 bytes of IV come from the container, last 8 bytes are always initialized to 0. private static final byte[] TEST_INITIALIZATION_VECTOR = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, @@ -110,10 +112,10 @@ public class WebmExtractorTest extends InstrumentationTestCase { assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); assertFormat(); assertIndex(new IndexPoint(0, 0, TEST_DURATION_US)); - Map psshInfo = extractor.getPsshInfo(); - assertNotNull(psshInfo); - assertTrue(psshInfo.containsKey(WIDEVINE_UUID)); - android.test.MoreAsserts.assertEquals(TEST_ENCRYPTION_KEY_ID, psshInfo.get(WIDEVINE_UUID)); + DrmInitData drmInitData = extractor.getDrmInitData(); + assertNotNull(drmInitData); + android.test.MoreAsserts.assertEquals(TEST_ENCRYPTION_KEY_ID, drmInitData.get(WIDEVINE_UUID)); + android.test.MoreAsserts.assertEquals(TEST_ENCRYPTION_KEY_ID, drmInitData.get(ZERO_UUID)); } public void testPrepareThreeCuePoints() throws ParserException { @@ -353,6 +355,7 @@ public class WebmExtractorTest extends InstrumentationTestCase { } } + @SuppressLint("InlinedApi") private void assertSample( MediaSegment mediaSegment, int timeUs, boolean keyframe, boolean invisible, boolean encrypted) { @@ -695,7 +698,7 @@ public class WebmExtractorTest extends InstrumentationTestCase { } - /** Used by {@link createTracksElementWithVideo} to create a Track header with Encryption. */ + /** Used by {@link #createTracksElementWithVideo} to create a Track header with Encryption. */ private static final class ContentEncodingSettings { private final int order; From eba16e55b01e31c83eb001ef20093d276df3f100 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 10 Mar 2015 19:43:25 +0000 Subject: [PATCH 28/69] Support delayed loading by Loader. --- .../android/exoplayer/upstream/Loader.java | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/Loader.java b/library/src/main/java/com/google/android/exoplayer/upstream/Loader.java index eb420c8f12..d11f2166c8 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/Loader.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/Loader.java @@ -127,6 +127,21 @@ public final class Loader { startLoading(myLooper, loadable, callback); } + /** + * Invokes {@link #startLoading(Looper, Loadable, Callback)}, using the {@link Looper} + * associated with the calling thread. Loading is delayed by {@code delayMs}. + * + * @param loadable The {@link Loadable} to load. + * @param callback A callback to invoke when the load ends. + * @param delayMs Number of milliseconds to wait before calling {@link Loadable#load()}. + * @throws IllegalStateException If the calling thread does not have an associated {@link Looper}. + */ + public void startLoading(Loadable loadable, Callback callback, int delayMs) { + Looper myLooper = Looper.myLooper(); + Assertions.checkState(myLooper != null); + startLoading(myLooper, loadable, callback, delayMs); + } + /** * Start loading a {@link Loadable}. *

@@ -138,9 +153,24 @@ public final class Loader { * @param callback A callback to invoke when the load ends. */ public void startLoading(Looper looper, Loadable loadable, Callback callback) { + startLoading(looper, loadable, callback, 0); + } + + /** + * Start loading a {@link Loadable} after {@code delayMs} has elapsed. + *

+ * A {@link Loader} instance can only load one {@link Loadable} at a time, and so this method + * must not be called when another load is in progress. + * + * @param looper The looper of the thread on which the callback should be invoked. + * @param loadable The {@link Loadable} to load. + * @param callback A callback to invoke when the load ends. + * @param delayMs Number of milliseconds to wait before calling {@link Loadable#load()}. + */ + public void startLoading(Looper looper, Loadable loadable, Callback callback, int delayMs) { Assertions.checkState(!loading); loading = true; - currentTask = new LoadTask(looper, loadable, callback); + currentTask = new LoadTask(looper, loadable, callback, delayMs); downloadExecutorService.submit(currentTask); } @@ -182,13 +212,15 @@ public final class Loader { private final Loadable loadable; private final Loader.Callback callback; + private final int delayMs; private volatile Thread executorThread; - public LoadTask(Looper looper, Loadable loadable, Loader.Callback callback) { + public LoadTask(Looper looper, Loadable loadable, Loader.Callback callback, int delayMs) { super(looper); this.loadable = loadable; this.callback = callback; + this.delayMs = delayMs; } public void quit() { @@ -202,6 +234,9 @@ public final class Loader { public void run() { try { executorThread = Thread.currentThread(); + if (delayMs > 0) { + Thread.sleep(delayMs); + } if (!loadable.isLoadCanceled()) { loadable.load(); } From 5e11b9f008fcbe4ef4ad7611d08a99c0a3c562d7 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 10 Mar 2015 19:48:41 +0000 Subject: [PATCH 29/69] Add DrmInitData (missed from a previous commit). --- .../android/exoplayer/drm/DrmInitData.java | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 library/src/main/java/com/google/android/exoplayer/drm/DrmInitData.java diff --git a/library/src/main/java/com/google/android/exoplayer/drm/DrmInitData.java b/library/src/main/java/com/google/android/exoplayer/drm/DrmInitData.java new file mode 100644 index 0000000000..ae862d0bc9 --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/drm/DrmInitData.java @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.drm; + +import android.media.MediaDrm; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +/** + * Encapsulates initialization data required by a {@link MediaDrm} instance. + */ +public abstract class DrmInitData { + + /** + * The container mime type. + */ + public final String mimeType; + + public DrmInitData(String mimeType) { + this.mimeType = mimeType; + } + + /** + * Retrieves initialization data for a given DRM scheme, specified by its UUID. + * + * @param schemeUuid The DRM scheme's UUID. + * @return The initialization data for the scheme, or null if the scheme is not supported. + */ + public abstract byte[] get(UUID schemeUuid); + + /** + * A {@link DrmInitData} implementation that maps UUID onto scheme specific data. + */ + public static final class Mapped extends DrmInitData { + + private final Map schemeData; + + public Mapped(String mimeType) { + super(mimeType); + schemeData = new HashMap(); + } + + @Override + public byte[] get(UUID schemeUuid) { + return schemeData.get(schemeUuid); + } + + /** + * Inserts scheme specific initialization data. + * + * @param schemeUuid The scheme UUID. + * @param data The corresponding initialization data. + */ + public void put(UUID schemeUuid, byte[] data) { + schemeData.put(schemeUuid, data); + } + + /** + * Inserts scheme specific initialization data. + * + * @param data A mapping from scheme UUID to initialization data. + */ + public void putAll(Map data) { + schemeData.putAll(data); + } + + } + + /** + * A {@link DrmInitData} implementation that returns the same initialization data for all schemes. + */ + public static final class Universal extends DrmInitData { + + private byte[] data; + + public Universal(String mimeType, byte[] data) { + super(mimeType); + this.data = data; + } + + @Override + public byte[] get(UUID schemeUuid) { + return data; + } + + } + +} From 56a509d8e43b459bdefbd115b85aa7103c16770c Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 10 Mar 2015 21:44:20 +0000 Subject: [PATCH 30/69] Clean up handling of encrypted samples in fmp4/webm extractors. - The fmp4 extractor was reading from sampleEncryptionData even for not-encrypted samples, which I'm pretty sure isn't right. Fixed this. For all encrypted content I've seen, this change will be a no-op because isEncrypted is always true if there's an encryptionBox present. - Made webm extractor only set cryptoInfo if isEncrypted is true. - Align variable naming in the two extractors, for clarity. --- .../parser/mp4/FragmentedMp4Extractor.java | 12 ++++---- .../chunk/parser/webm/WebmExtractor.java | 29 ++++++++++--------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java index a6a95cd8d7..3febb381c5 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java @@ -799,8 +799,11 @@ public final class FragmentedMp4Extractor implements Extractor { private void readSampleEncryptionData(ParsableByteArray sampleEncryptionData, SampleHolder out) { TrackEncryptionBox encryptionBox = track.sampleDescriptionEncryptionBoxes[fragmentRun.sampleDescriptionIndex]; + if (!encryptionBox.isEncrypted) { + return; + } + byte[] keyId = encryptionBox.keyId; - boolean isEncrypted = encryptionBox.isEncrypted; int vectorSize = encryptionBox.initializationVectorSize; boolean subsampleEncryption = fragmentRun.sampleHasSubsampleEncryptionTable[sampleIndex]; @@ -828,11 +831,10 @@ public final class FragmentedMp4Extractor implements Extractor { clearDataSizes[0] = 0; encryptedDataSizes[0] = fragmentRun.sampleSizeTable[sampleIndex]; } + out.cryptoInfo.set(subsampleCount, clearDataSizes, encryptedDataSizes, keyId, vector, - isEncrypted ? MediaCodec.CRYPTO_MODE_AES_CTR : MediaCodec.CRYPTO_MODE_UNENCRYPTED); - if (isEncrypted) { - out.flags |= MediaExtractor.SAMPLE_FLAG_ENCRYPTED; - } + MediaCodec.CRYPTO_MODE_AES_CTR); + out.flags |= MediaExtractor.SAMPLE_FLAG_ENCRYPTED; } } diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java index cb6c765708..0141a4144b 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java @@ -486,29 +486,30 @@ public final class WebmExtractor implements Extractor { throw new ParserException("Extension bit is set in signal byte"); } boolean isEncrypted = (signalByte[0] & 0x01) == 0x01; - byte[] iv = null; if (isEncrypted) { + byte[] iv = null; iv = sampleHolder.cryptoInfo.iv; if (iv == null || iv.length != BLOCK_COUNTER_SIZE) { iv = new byte[BLOCK_COUNTER_SIZE]; } reader.readBytes(inputStream, iv, 8); // The container has only 8 bytes of IV. sampleHolder.size -= 8; + + int[] clearDataSizes = sampleHolder.cryptoInfo.numBytesOfClearData; + if (clearDataSizes == null || clearDataSizes.length < 1) { + clearDataSizes = new int[1]; + } + int[] encryptedDataSizes = sampleHolder.cryptoInfo.numBytesOfEncryptedData; + if (encryptedDataSizes == null || encryptedDataSizes.length < 1) { + encryptedDataSizes = new int[1]; + } + clearDataSizes[0] = 0; + encryptedDataSizes[0] = sampleHolder.size; + + sampleHolder.cryptoInfo.set(1, clearDataSizes, encryptedDataSizes, + encryptionKeyId, iv, MediaCodec.CRYPTO_MODE_AES_CTR); sampleHolder.flags |= MediaExtractor.SAMPLE_FLAG_ENCRYPTED; } - int[] numBytesOfClearData = sampleHolder.cryptoInfo.numBytesOfClearData; - if (numBytesOfClearData == null || numBytesOfClearData.length != 1) { - numBytesOfClearData = new int[1]; - } - numBytesOfClearData[0] = isEncrypted ? 0 : sampleHolder.size; - int[] numBytesOfEncryptedData = sampleHolder.cryptoInfo.numBytesOfEncryptedData; - if (numBytesOfEncryptedData == null || numBytesOfEncryptedData.length != 1) { - numBytesOfEncryptedData = new int[1]; - } - numBytesOfEncryptedData[0] = isEncrypted ? sampleHolder.size : 0; - sampleHolder.cryptoInfo.set( - 1, numBytesOfClearData, numBytesOfEncryptedData, encryptionKeyId, iv, - isEncrypted ? MediaCodec.CRYPTO_MODE_AES_CTR : MediaCodec.CRYPTO_MODE_UNENCRYPTED); } if (sampleHolder.data == null || sampleHolder.data.capacity() < sampleHolder.size) { From 5d0457152d46052a32209ec11ee6237eaecf3a76 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Wed, 11 Mar 2015 15:48:12 +0000 Subject: [PATCH 31/69] Remove need for InlinedApi with a few more C constants. --- .../java/com/google/android/exoplayer/C.java | 15 ++++++++++++- .../exoplayer/MediaCodecTrackRenderer.java | 3 +-- .../android/exoplayer/SampleHolder.java | 5 ++--- .../parser/mp4/FragmentedMp4Extractor.java | 9 ++------ .../chunk/parser/webm/WebmExtractor.java | 9 ++------ .../source/FrameworkSampleExtractor.java | 3 ++- .../com/google/android/exoplayer/CTest.java | 22 +++++++++++++++++++ .../chunk/parser/webm/WebmExtractorTest.java | 8 ++----- 8 files changed, 47 insertions(+), 27 deletions(-) create mode 100644 library/src/test/java/com/google/android/exoplayer/CTest.java diff --git a/library/src/main/java/com/google/android/exoplayer/C.java b/library/src/main/java/com/google/android/exoplayer/C.java index 6bf5e08c42..a6d60b4ef7 100644 --- a/library/src/main/java/com/google/android/exoplayer/C.java +++ b/library/src/main/java/com/google/android/exoplayer/C.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer; +import android.media.MediaCodec; import android.media.MediaExtractor; /** @@ -43,11 +44,23 @@ public final class C { public static final String UTF8_NAME = "UTF-8"; /** - * Sample flag that indicates the sample is a synchronization sample. + * @see MediaExtractor#SAMPLE_FLAG_SYNC */ @SuppressWarnings("InlinedApi") public static final int SAMPLE_FLAG_SYNC = MediaExtractor.SAMPLE_FLAG_SYNC; + /** + * @see MediaExtractor#SAMPLE_FLAG_ENCRYPTED + */ + @SuppressWarnings("InlinedApi") + public static final int SAMPLE_FLAG_ENCRYPTED = MediaExtractor.SAMPLE_FLAG_ENCRYPTED; + + /** + * @see MediaCodec#CRYPTO_MODE_AES_CTR + */ + @SuppressWarnings("InlinedApi") + public static final int CRYPTO_MODE_AES_CTR = MediaCodec.CRYPTO_MODE_AES_CTR; + private C() {} } diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index 71dbda7fc8..104359d688 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -26,7 +26,6 @@ import android.media.MediaCodec; import android.media.MediaCodec.CodecException; import android.media.MediaCodec.CryptoException; import android.media.MediaCrypto; -import android.media.MediaExtractor; import android.os.Handler; import android.os.SystemClock; @@ -583,7 +582,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { } waitingForFirstSyncFrame = false; } - boolean sampleEncrypted = (sampleHolder.flags & MediaExtractor.SAMPLE_FLAG_ENCRYPTED) != 0; + boolean sampleEncrypted = (sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0; waitingForKeys = shouldWaitForKeys(sampleEncrypted); if (waitingForKeys) { return false; diff --git a/library/src/main/java/com/google/android/exoplayer/SampleHolder.java b/library/src/main/java/com/google/android/exoplayer/SampleHolder.java index 9a258b752c..d548ea163a 100644 --- a/library/src/main/java/com/google/android/exoplayer/SampleHolder.java +++ b/library/src/main/java/com/google/android/exoplayer/SampleHolder.java @@ -50,9 +50,8 @@ public final class SampleHolder { public int size; /** - * Flags that accompany the sample. A combination of - * {@link android.media.MediaExtractor#SAMPLE_FLAG_SYNC} and - * {@link android.media.MediaExtractor#SAMPLE_FLAG_ENCRYPTED} + * Flags that accompany the sample. A combination of {@link C#SAMPLE_FLAG_SYNC} and + * {@link C#SAMPLE_FLAG_ENCRYPTED} */ public int flags; diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java index 3febb381c5..23fffe997a 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java @@ -33,10 +33,6 @@ import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableByteArray; import com.google.android.exoplayer.util.Util; -import android.annotation.SuppressLint; -import android.media.MediaCodec; -import android.media.MediaExtractor; - import java.nio.ByteBuffer; import java.util.Arrays; import java.util.Collections; @@ -795,7 +791,6 @@ public final class FragmentedMp4Extractor implements Extractor { return RESULT_READ_SAMPLE; } - @SuppressLint("InlinedApi") private void readSampleEncryptionData(ParsableByteArray sampleEncryptionData, SampleHolder out) { TrackEncryptionBox encryptionBox = track.sampleDescriptionEncryptionBoxes[fragmentRun.sampleDescriptionIndex]; @@ -833,8 +828,8 @@ public final class FragmentedMp4Extractor implements Extractor { } out.cryptoInfo.set(subsampleCount, clearDataSizes, encryptedDataSizes, keyId, vector, - MediaCodec.CRYPTO_MODE_AES_CTR); - out.flags |= MediaExtractor.SAMPLE_FLAG_ENCRYPTED; + C.CRYPTO_MODE_AES_CTR); + out.flags |= C.SAMPLE_FLAG_ENCRYPTED; } } diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java index 0141a4144b..73551ba4dc 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java @@ -26,10 +26,6 @@ import com.google.android.exoplayer.upstream.NonBlockingInputStream; import com.google.android.exoplayer.util.LongArray; import com.google.android.exoplayer.util.MimeTypes; -import android.annotation.SuppressLint; -import android.media.MediaCodec; -import android.media.MediaExtractor; - import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; @@ -425,7 +421,6 @@ public final class WebmExtractor implements Extractor { return true; } - @SuppressLint("InlinedApi") /* package */ boolean onBinaryElement( int id, long elementOffsetBytes, int headerSizeBytes, int contentsSizeBytes, NonBlockingInputStream inputStream) throws ParserException { @@ -507,8 +502,8 @@ public final class WebmExtractor implements Extractor { encryptedDataSizes[0] = sampleHolder.size; sampleHolder.cryptoInfo.set(1, clearDataSizes, encryptedDataSizes, - encryptionKeyId, iv, MediaCodec.CRYPTO_MODE_AES_CTR); - sampleHolder.flags |= MediaExtractor.SAMPLE_FLAG_ENCRYPTED; + encryptionKeyId, iv, C.CRYPTO_MODE_AES_CTR); + sampleHolder.flags |= C.SAMPLE_FLAG_ENCRYPTED; } } diff --git a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java index 6905ffe1ce..f8cc132ef2 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer.source; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.SampleSource; @@ -163,7 +164,7 @@ public final class FrameworkSampleExtractor implements SampleExtractor { } sampleHolder.timeUs = mediaExtractor.getSampleTime(); sampleHolder.flags = mediaExtractor.getSampleFlags(); - if ((sampleHolder.flags & MediaExtractor.SAMPLE_FLAG_ENCRYPTED) != 0) { + if ((sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0) { sampleHolder.cryptoInfo.setFromExtractorV16(mediaExtractor); } diff --git a/library/src/test/java/com/google/android/exoplayer/CTest.java b/library/src/test/java/com/google/android/exoplayer/CTest.java new file mode 100644 index 0000000000..ab5157eb4a --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/CTest.java @@ -0,0 +1,22 @@ +package com.google.android.exoplayer; + +import android.annotation.SuppressLint; +import android.media.MediaCodec; +import android.media.MediaExtractor; + +import junit.framework.TestCase; + +/** + * Unit test for {@link C}. + */ +public class CTest extends TestCase { + + @SuppressLint("InlinedApi") + public static final void testContants() { + // Sanity check that constant values match those defined by the platform. + assertEquals(MediaExtractor.SAMPLE_FLAG_SYNC, C.SAMPLE_FLAG_SYNC); + assertEquals(MediaExtractor.SAMPLE_FLAG_ENCRYPTED, C.SAMPLE_FLAG_ENCRYPTED); + assertEquals(MediaCodec.CRYPTO_MODE_AES_CTR, C.CRYPTO_MODE_AES_CTR); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java index 52bb7de792..5e43a4cb7f 100644 --- a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java +++ b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java @@ -25,9 +25,6 @@ import com.google.android.exoplayer.upstream.ByteArrayNonBlockingInputStream; import com.google.android.exoplayer.upstream.NonBlockingInputStream; import com.google.android.exoplayer.util.MimeTypes; -import android.annotation.SuppressLint; -import android.media.MediaCodec; -import android.media.MediaExtractor; import android.test.InstrumentationTestCase; import java.io.IOException; @@ -355,7 +352,6 @@ public class WebmExtractorTest extends InstrumentationTestCase { } } - @SuppressLint("InlinedApi") private void assertSample( MediaSegment mediaSegment, int timeUs, boolean keyframe, boolean invisible, boolean encrypted) { @@ -364,10 +360,10 @@ public class WebmExtractorTest extends InstrumentationTestCase { assertEquals(timeUs, sampleHolder.timeUs); assertEquals(keyframe, (sampleHolder.flags & C.SAMPLE_FLAG_SYNC) != 0); assertEquals(invisible, sampleHolder.decodeOnly); - assertEquals(encrypted, (sampleHolder.flags & MediaExtractor.SAMPLE_FLAG_ENCRYPTED) != 0); + assertEquals(encrypted, (sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0); if (encrypted) { android.test.MoreAsserts.assertEquals(TEST_INITIALIZATION_VECTOR, sampleHolder.cryptoInfo.iv); - assertEquals(MediaCodec.CRYPTO_MODE_AES_CTR, sampleHolder.cryptoInfo.mode); + assertEquals(C.CRYPTO_MODE_AES_CTR, sampleHolder.cryptoInfo.mode); assertEquals(1, sampleHolder.cryptoInfo.numSubSamples); assertEquals(100, sampleHolder.cryptoInfo.numBytesOfEncryptedData[0]); assertEquals(0, sampleHolder.cryptoInfo.numBytesOfClearData[0]); From becc6fca4cbdeeddfac5cd5050d9f00081374802 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Wed, 11 Mar 2015 15:49:53 +0000 Subject: [PATCH 32/69] Enhance SampleQueue/RollingSampleBuffer to support other use cases. - This is a step toward hopefully converging HLS and CHUNK packages. - Add support for encrypted samples. - Add support for appending from a DataSource. --- .../exoplayer/hls/parser/AdtsReader.java | 2 +- .../exoplayer/hls/parser/H264Reader.java | 3 +- .../exoplayer/hls/parser/Id3Reader.java | 3 +- .../hls/parser/RollingSampleBuffer.java | 201 ++++++++++++++++-- .../exoplayer/hls/parser/SampleQueue.java | 19 +- .../exoplayer/hls/parser/SeiReader.java | 3 +- 6 files changed, 201 insertions(+), 30 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java index 9dec6cc84a..0aa7b7c07b 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java @@ -88,7 +88,7 @@ import java.util.Collections; appendData(data, bytesToRead); bytesRead += bytesToRead; if (bytesRead == sampleSize) { - commitSample(true); + commitSample(C.SAMPLE_FLAG_SYNC); timeUs += frameDurationUs; bytesRead = 0; state = STATE_FINDING_SYNC; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java index 7e94376c32..96bc76b24f 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer.hls.parser; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.mp4.Mp4Util; import com.google.android.exoplayer.upstream.BufferPool; @@ -88,7 +89,7 @@ import java.util.List; if (isKeyframe && !hasMediaFormat() && sps.isCompleted() && pps.isCompleted()) { parseMediaFormat(sps, pps); } - commitSample(isKeyframe, nalUnitOffsetInData); + commitSample(isKeyframe ? C.SAMPLE_FLAG_SYNC : 0, nalUnitOffsetInData); } startSample(pesTimeUs, nalUnitOffsetInData); isKeyframe = false; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java index 7de263d6da..a9d51d1515 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer.hls.parser; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.util.ParsableByteArray; @@ -41,7 +42,7 @@ import com.google.android.exoplayer.util.ParsableByteArray; @Override public void packetFinished() { - commitSample(true); + commitSample(C.SAMPLE_FLAG_SYNC); } } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/RollingSampleBuffer.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/RollingSampleBuffer.java index 48a618edde..af7901f0f4 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/RollingSampleBuffer.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/RollingSampleBuffer.java @@ -18,9 +18,11 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.C; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.upstream.BufferPool; +import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.ParsableByteArray; +import java.io.IOException; import java.nio.ByteBuffer; import java.util.concurrent.ConcurrentLinkedQueue; @@ -29,12 +31,15 @@ import java.util.concurrent.ConcurrentLinkedQueue; */ /* package */ final class RollingSampleBuffer { + private static final int INITIAL_SCRATCH_SIZE = 32; + private final BufferPool fragmentPool; private final int fragmentLength; private final InfoQueue infoQueue; private final ConcurrentLinkedQueue dataQueue; - private final long[] dataOffsetHolder; + private final SampleExtrasHolder extrasHolder; + private final ParsableByteArray scratch; // Accessed only by the consuming thread. private long totalBytesDropped; @@ -51,7 +56,8 @@ import java.util.concurrent.ConcurrentLinkedQueue; fragmentLength = bufferPool.bufferLength; infoQueue = new InfoQueue(); dataQueue = new ConcurrentLinkedQueue(); - dataOffsetHolder = new long[1]; + extrasHolder = new SampleExtrasHolder(); + scratch = new ParsableByteArray(INITIAL_SCRATCH_SIZE); } public void release() { @@ -71,7 +77,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; * @return True if the holder was filled. False if there is no current sample. */ public boolean peekSample(SampleHolder holder) { - return infoQueue.peekSample(holder, dataOffsetHolder); + return infoQueue.peekSample(holder, extrasHolder); } /** @@ -85,23 +91,99 @@ import java.util.concurrent.ConcurrentLinkedQueue; /** * Reads the current sample, advancing the read index to the next sample. * - * @param holder The holder into which the current sample should be written. + * @param sampleHolder The holder into which the current sample should be written. */ - public void readSample(SampleHolder holder) { - // Write the sample information into the holder. - infoQueue.peekSample(holder, dataOffsetHolder); - // Write the sample data into the holder. - if (holder.data == null || holder.data.capacity() < holder.size) { - holder.replaceBuffer(holder.size); + public void readSample(SampleHolder sampleHolder) { + // Write the sample information into the holder and extrasHolder. + infoQueue.peekSample(sampleHolder, extrasHolder); + // Read encryption data if the sample is encrypted. + if ((sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0) { + readEncryptionData(sampleHolder, extrasHolder); } - if (holder.data != null) { - readData(dataOffsetHolder[0], holder.data, holder.size); + // Write the sample data into the holder. + if (sampleHolder.data == null || sampleHolder.data.capacity() < sampleHolder.size) { + sampleHolder.replaceBuffer(sampleHolder.size); + } + if (sampleHolder.data != null) { + readData(extrasHolder.offset, sampleHolder.data, sampleHolder.size); } // Advance the read head. long nextOffset = infoQueue.moveToNextSample(); dropFragmentsTo(nextOffset); } + /** + * Reads encryption data for the current sample. + *

+ * The encryption data is written into {@code sampleHolder.cryptoInfo}, and + * {@code sampleHolder.size} is adjusted to subtract the number of bytes that were read. The + * same value is added to {@code extrasHolder.offset}. + * + * @param sampleHolder The holder into which the encryption data should be written. + * @param extrasHolder The extras holder whose offset should be read and subsequently adjusted. + */ + private void readEncryptionData(SampleHolder sampleHolder, SampleExtrasHolder extrasHolder) { + long offset = extrasHolder.offset; + + // Read the signal byte. + readData(offset, scratch.data, 1); + offset++; + byte signalByte = scratch.data[0]; + boolean subsampleEncryption = (signalByte & 0x80) != 0; + int ivSize = signalByte & 0x7F; + + // Read the initialization vector. + if (sampleHolder.cryptoInfo.iv == null) { + sampleHolder.cryptoInfo.iv = new byte[16]; + } + readData(offset, sampleHolder.cryptoInfo.iv, ivSize); + offset += ivSize; + + // Read the subsample count, if present. + int subsampleCount; + if (subsampleEncryption) { + readData(offset, scratch.data, 2); + offset += 2; + scratch.setPosition(0); + subsampleCount = scratch.readUnsignedShort(); + } else { + subsampleCount = 1; + } + + // Write the clear and encrypted subsample sizes. + int[] clearDataSizes = sampleHolder.cryptoInfo.numBytesOfClearData; + if (clearDataSizes == null || clearDataSizes.length < subsampleCount) { + clearDataSizes = new int[subsampleCount]; + } + int[] encryptedDataSizes = sampleHolder.cryptoInfo.numBytesOfEncryptedData; + if (encryptedDataSizes == null || encryptedDataSizes.length < subsampleCount) { + encryptedDataSizes = new int[subsampleCount]; + } + if (subsampleEncryption) { + int subsampleDataLength = 6 * subsampleCount; + ensureCapacity(scratch, subsampleDataLength); + readData(offset, scratch.data, subsampleDataLength); + offset += subsampleDataLength; + scratch.setPosition(0); + for (int i = 0; i < subsampleCount; i++) { + clearDataSizes[i] = scratch.readUnsignedShort(); + encryptedDataSizes[i] = scratch.readUnsignedIntToInt(); + } + } else { + clearDataSizes[0] = 0; + encryptedDataSizes[0] = sampleHolder.size - (int) (offset - extrasHolder.offset); + } + + // Populate the cryptoInfo. + sampleHolder.cryptoInfo.set(subsampleCount, clearDataSizes, encryptedDataSizes, + extrasHolder.encryptionKeyId, sampleHolder.cryptoInfo.iv, C.CRYPTO_MODE_AES_CTR); + + // Adjust the offset and size to take into account the bytes read. + int bytesRead = (int) (offset - extrasHolder.offset); + extrasHolder.offset += bytesRead; + sampleHolder.size -= bytesRead; + } + /** * Reads data from the front of the rolling buffer. * @@ -121,6 +203,26 @@ import java.util.concurrent.ConcurrentLinkedQueue; } } + /** + * Reads data from the front of the rolling buffer. + * + * @param absolutePosition The absolute position from which data should be read. + * @param target The array into which data should be written. + * @param length The number of bytes to read. + */ + // TODO: Consider reducing duplication of this method and the one above. + private void readData(long absolutePosition, byte[] target, int length) { + int remaining = length; + while (remaining > 0) { + dropFragmentsTo(absolutePosition); + int positionInFragment = (int) (absolutePosition - totalBytesDropped); + int toCopy = Math.min(remaining, fragmentLength - positionInFragment); + System.arraycopy(dataQueue.peek(), positionInFragment, target, 0, toCopy); + absolutePosition += toCopy; + remaining -= toCopy; + } + } + /** * Discard any fragments that hold data prior to the specified absolute position, returning * them to the pool. @@ -136,6 +238,15 @@ import java.util.concurrent.ConcurrentLinkedQueue; } } + /** + * Ensure that the passed {@link ParsableByteArray} is of at least the specified limit. + */ + private static void ensureCapacity(ParsableByteArray byteArray, int limit) { + if (byteArray.limit() < limit) { + byteArray.reset(new byte[limit], limit); + } + } + // Called by the loading thread. /** @@ -151,12 +262,39 @@ import java.util.concurrent.ConcurrentLinkedQueue; pendingSampleOffset = totalBytesWritten + offset; } + /** + * Appends data to the rolling buffer. + * + * @param dataSource The source from which to read. + * @param length The maximum length of the read. + * @return The number of bytes read, or -1 if the the end of the source has been reached. + * @throws IOException If an error occurs reading from the source. + */ + public int appendData(DataSource dataSource, int length) throws IOException { + int remainingWriteLength = length; + if (dataQueue.isEmpty() || lastFragmentOffset == fragmentLength) { + lastFragmentOffset = 0; + lastFragment = fragmentPool.allocateDirect(); + dataQueue.add(lastFragment); + } + int thisWriteLength = Math.min(remainingWriteLength, fragmentLength - lastFragmentOffset); + int bytesRead = dataSource.read(lastFragment, lastFragmentOffset, thisWriteLength); + if (bytesRead == -1) { + return -1; + } + lastFragmentOffset += bytesRead; + remainingWriteLength -= bytesRead; + totalBytesWritten += bytesRead; + return bytesRead; + } + /** * Appends data to the rolling buffer. * * @param buffer A buffer containing the data to append. * @param length The length of the data to append. */ + // TODO: Consider reducing duplication of this method and the one above. public void appendData(ParsableByteArray buffer, int length) { int remainingWriteLength = length; while (remainingWriteLength > 0) { @@ -176,21 +314,22 @@ import java.util.concurrent.ConcurrentLinkedQueue; /** * Indicates the end point for the current sample, making it available for consumption. * - * @param isKeyframe True if the sample being committed is a keyframe. False otherwise. + * @param flags Flags that accompany the sample. See {@link SampleHolder#flags}. * @param offset The offset of the first byte after the end of the sample's data, relative to * the total number of bytes written to the buffer. Must be negative or zero. + * @param encryptionKey The encryption key associated with the sample, or null. */ - public void commitSample(boolean isKeyframe, int offset) { + public void commitSample(int flags, int offset, byte[] encryptionKey) { Assertions.checkState(offset <= 0); int sampleSize = (int) (totalBytesWritten + offset - pendingSampleOffset); - infoQueue.commitSample(pendingSampleTimeUs, pendingSampleOffset, sampleSize, - isKeyframe ? C.SAMPLE_FLAG_SYNC : 0); + infoQueue.commitSample(pendingSampleTimeUs, pendingSampleOffset, sampleSize, flags, + encryptionKey); } /** * Holds information about the samples in the rolling buffer. */ - private static class InfoQueue { + private static final class InfoQueue { private static final int SAMPLE_CAPACITY_INCREMENT = 1000; @@ -200,6 +339,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; private int[] sizes; private int[] flags; private long[] timesUs; + private byte[][] encryptionKeys; private int queueSize; private int readIndex; @@ -211,6 +351,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; timesUs = new long[capacity]; flags = new int[capacity]; sizes = new int[capacity]; + encryptionKeys = new byte[capacity][]; } // Called by the consuming thread. @@ -224,18 +365,18 @@ import java.util.concurrent.ConcurrentLinkedQueue; * {@code offsetHolder[0]}. * * @param holder The holder into which the current sample information should be written. - * @param offsetHolder The holder into which the absolute position of the sample's data should - * be written. + * @param extrasHolder The holder into which extra sample information should be written. * @return True if the holders were filled. False if there is no current sample. */ - public synchronized boolean peekSample(SampleHolder holder, long[] offsetHolder) { + public synchronized boolean peekSample(SampleHolder holder, SampleExtrasHolder extrasHolder) { if (queueSize == 0) { return false; } holder.timeUs = timesUs[readIndex]; holder.size = sizes[readIndex]; holder.flags = flags[readIndex]; - offsetHolder[0] = offsets[readIndex]; + extrasHolder.offset = offsets[readIndex]; + extrasHolder.encryptionKeyId = encryptionKeys[readIndex]; return true; } @@ -257,11 +398,13 @@ import java.util.concurrent.ConcurrentLinkedQueue; // Called by the loading thread. - public synchronized void commitSample(long timeUs, long offset, int size, int sampleFlags) { + public synchronized void commitSample(long timeUs, long offset, int size, int sampleFlags, + byte[] encryptionKey) { timesUs[writeIndex] = timeUs; offsets[writeIndex] = offset; sizes[writeIndex] = size; flags[writeIndex] = sampleFlags; + encryptionKeys[writeIndex] = encryptionKey; // Increment the write index. queueSize++; if (queueSize == capacity) { @@ -271,20 +414,24 @@ import java.util.concurrent.ConcurrentLinkedQueue; long[] newTimesUs = new long[newCapacity]; int[] newFlags = new int[newCapacity]; int[] newSizes = new int[newCapacity]; + byte[][] newEncryptionKeys = new byte[newCapacity][]; int beforeWrap = capacity - readIndex; System.arraycopy(offsets, readIndex, newOffsets, 0, beforeWrap); System.arraycopy(timesUs, readIndex, newTimesUs, 0, beforeWrap); System.arraycopy(flags, readIndex, newFlags, 0, beforeWrap); System.arraycopy(sizes, readIndex, newSizes, 0, beforeWrap); + System.arraycopy(encryptionKeys, readIndex, newEncryptionKeys, 0, beforeWrap); int afterWrap = readIndex; System.arraycopy(offsets, 0, newOffsets, beforeWrap, afterWrap); System.arraycopy(timesUs, 0, newTimesUs, beforeWrap, afterWrap); System.arraycopy(flags, 0, newFlags, beforeWrap, afterWrap); System.arraycopy(sizes, 0, newSizes, beforeWrap, afterWrap); + System.arraycopy(encryptionKeys, 0, newEncryptionKeys, beforeWrap, afterWrap); offsets = newOffsets; timesUs = newTimesUs; flags = newFlags; sizes = newSizes; + encryptionKeys = newEncryptionKeys; readIndex = 0; writeIndex = capacity; queueSize = capacity; @@ -300,4 +447,14 @@ import java.util.concurrent.ConcurrentLinkedQueue; } + /** + * Holds additional sample information not held by {@link SampleHolder}. + */ + private static final class SampleExtrasHolder { + + public long offset; + public byte[] encryptionKeyId; + + } + } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java index 348a2cd843..bc2ce2a0a6 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java @@ -19,8 +19,11 @@ import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.upstream.BufferPool; +import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.util.ParsableByteArray; +import java.io.IOException; + /** * Wraps a {@link RollingSampleBuffer}, adding higher level functionality such as enforcing that * the first sample returned from the queue is a keyframe, allowing splicing to another queue, and @@ -186,16 +189,24 @@ import com.google.android.exoplayer.util.ParsableByteArray; rollingBuffer.startSample(sampleTimeUs, offset); } + protected int appendData(DataSource dataSource, int length) throws IOException { + return rollingBuffer.appendData(dataSource, length); + } + protected void appendData(ParsableByteArray buffer, int length) { rollingBuffer.appendData(buffer, length); } - protected void commitSample(boolean isKeyframe) { - commitSample(isKeyframe, 0); + protected void commitSample(int flags) { + commitSample(flags, 0, null); } - protected void commitSample(boolean isKeyframe, int offset) { - rollingBuffer.commitSample(isKeyframe, offset); + protected void commitSample(int flags, int offset) { + commitSample(flags, offset, null); + } + + protected void commitSample(int flags, int offset, byte[] encryptionKey) { + rollingBuffer.commitSample(flags, offset, encryptionKey); writingSample = false; } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java index 1065690529..f2f1def89b 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer.hls.parser; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.text.eia608.Eia608Parser; import com.google.android.exoplayer.upstream.BufferPool; @@ -59,7 +60,7 @@ import com.google.android.exoplayer.util.ParsableByteArray; if (Eia608Parser.isSeiMessageEia608(payloadType, payloadSize, seiBuffer)) { startSample(pesTimeUs); appendData(seiBuffer, payloadSize); - commitSample(true); + commitSample(C.SAMPLE_FLAG_SYNC); } else { seiBuffer.skip(payloadSize); } From 5ca2e0fd95d580df34599c84b37f9e1e4f49da87 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Wed, 11 Mar 2015 19:21:33 +0000 Subject: [PATCH 33/69] First step toward extractor unification. - It's probably easiest to think of this as a standalone HLS change, which is splitting out the "loading" and "consuming" sides of HlsExtractor and a good structural change in its own right. To do this, HlsExtractorWrapper becomes a final class implementing the consuming side. HlsExtractor becomes an interface defining the loading side. - The bigger picture is that, hopefully, HlsExtractor will become a lightweight extractor interface that can be used throughout the library. Because it doesn't need to implement the consuming side, we'll save on having to re-implement the consuming side for every extractor (we'll probably need one consuming side implementation for HLS/DASH/SmoothStreaming, and a second one for everything else, both of which will use SampleQueue). It's expected that the HlsExtractor interface will need to change to accommodate all use cases. - The next step in unification will be to try and have FragmentedMp4Extractor implement HlsExtractor (which will need renaming). Once this is done, I'll try and move the chunk package over to use the HlsExtractor interface. --- .../android/exoplayer/hls/HlsChunkSource.java | 14 +- .../exoplayer/hls/HlsSampleSource.java | 18 +- .../google/android/exoplayer/hls/TsChunk.java | 6 +- .../exoplayer/hls/parser/AdtsExtractor.java | 64 +----- .../exoplayer/hls/parser/AdtsReader.java | 16 +- .../hls/parser/ElementaryStreamReader.java | 38 +++- .../exoplayer/hls/parser/H264Reader.java | 27 +-- .../exoplayer/hls/parser/HlsExtractor.java | 134 ++++-------- .../hls/parser/HlsExtractorWrapper.java | 198 ++++++++++++++++++ .../exoplayer/hls/parser/Id3Reader.java | 16 +- .../exoplayer/hls/parser/SampleQueue.java | 58 ++--- .../exoplayer/hls/parser/SeiReader.java | 30 +-- .../exoplayer/hls/parser/TsExtractor.java | 96 +++------ 13 files changed, 402 insertions(+), 313 deletions(-) create mode 100644 library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index 151d392ccb..cd46f11052 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -19,6 +19,7 @@ import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.hls.parser.AdtsExtractor; import com.google.android.exoplayer.hls.parser.HlsExtractor; +import com.google.android.exoplayer.hls.parser.HlsExtractorWrapper; import com.google.android.exoplayer.hls.parser.TsExtractor; import com.google.android.exoplayer.upstream.Aes128DataSource; import com.google.android.exoplayer.upstream.BandwidthMeter; @@ -341,16 +342,17 @@ public class HlsChunkSource { boolean isLastChunk = !mediaPlaylist.live && chunkIndex == mediaPlaylist.segments.size() - 1; // Configure the extractor that will read the chunk. - HlsExtractor extractor; + HlsExtractorWrapper extractorWrapper; if (previousTsChunk == null || segment.discontinuity || switchingVariant || liveDiscontinuity) { - extractor = chunkUri.getLastPathSegment().endsWith(AAC_FILE_EXTENSION) - ? new AdtsExtractor(switchingVariantSpliced, startTimeUs, bufferPool) - : new TsExtractor(switchingVariantSpliced, startTimeUs, bufferPool); + HlsExtractor extractor = chunkUri.getLastPathSegment().endsWith(AAC_FILE_EXTENSION) + ? new AdtsExtractor(startTimeUs) + : new TsExtractor(startTimeUs); + extractorWrapper = new HlsExtractorWrapper(bufferPool, extractor, switchingVariantSpliced); } else { - extractor = previousTsChunk.extractor; + extractorWrapper = previousTsChunk.extractor; } - return new TsChunk(dataSource, dataSpec, extractor, enabledVariants[variantIndex].index, + return new TsChunk(dataSource, dataSpec, extractorWrapper, enabledVariants[variantIndex].index, startTimeUs, endTimeUs, chunkMediaSequence, isLastChunk); } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java index 9db6c4ccc0..85fb2be5cc 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java @@ -21,7 +21,7 @@ import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.SampleSource; import com.google.android.exoplayer.TrackInfo; import com.google.android.exoplayer.TrackRenderer; -import com.google.android.exoplayer.hls.parser.HlsExtractor; +import com.google.android.exoplayer.hls.parser.HlsExtractorWrapper; import com.google.android.exoplayer.upstream.Loader; import com.google.android.exoplayer.upstream.Loader.Loadable; import com.google.android.exoplayer.util.Assertions; @@ -44,7 +44,7 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { private static final int NO_RESET_PENDING = -1; private final HlsChunkSource chunkSource; - private final LinkedList extractors; + private final LinkedList extractors; private final boolean frameAccurateSeeking; private final int minLoadableRetryCount; @@ -83,7 +83,7 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { this.frameAccurateSeeking = frameAccurateSeeking; this.remainingReleaseCount = downstreamRendererCount; this.minLoadableRetryCount = minLoadableRetryCount; - extractors = new LinkedList(); + extractors = new LinkedList(); } @Override @@ -96,7 +96,7 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { } continueBufferingInternal(); if (!extractors.isEmpty()) { - HlsExtractor extractor = extractors.getFirst(); + HlsExtractorWrapper extractor = extractors.getFirst(); if (extractor.isPrepared()) { trackCount = extractor.getTrackCount(); trackEnabledStates = new boolean[trackCount]; @@ -195,7 +195,7 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { return NOTHING_READ; } - HlsExtractor extractor = getCurrentExtractor(); + HlsExtractorWrapper extractor = getCurrentExtractor(); if (extractors.size() > 1) { // If there's more than one extractor, attempt to configure a seamless splice from the // current one to the next one. @@ -328,8 +328,8 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { * * @return The current extractor from which samples should be read. Guaranteed to be non-null. */ - private HlsExtractor getCurrentExtractor() { - HlsExtractor extractor = extractors.getFirst(); + private HlsExtractorWrapper getCurrentExtractor() { + HlsExtractorWrapper extractor = extractors.getFirst(); while (extractors.size() > 1 && !haveSamplesForEnabledTracks(extractor)) { // We're finished reading from the extractor for all tracks, and so can discard it. extractors.removeFirst().release(); @@ -338,7 +338,7 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { return extractor; } - private void discardSamplesForDisabledTracks(HlsExtractor extractor, long timeUs) { + private void discardSamplesForDisabledTracks(HlsExtractorWrapper extractor, long timeUs) { if (!extractor.isPrepared()) { return; } @@ -349,7 +349,7 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { } } - private boolean haveSamplesForEnabledTracks(HlsExtractor extractor) { + private boolean haveSamplesForEnabledTracks(HlsExtractorWrapper extractor) { if (!extractor.isPrepared()) { return false; } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java b/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java index a66330bb5c..863808d4ef 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java @@ -15,7 +15,7 @@ */ package com.google.android.exoplayer.hls; -import com.google.android.exoplayer.hls.parser.HlsExtractor; +import com.google.android.exoplayer.hls.parser.HlsExtractorWrapper; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.upstream.DataSpec; @@ -51,7 +51,7 @@ public final class TsChunk extends HlsChunk { /** * The extractor into which this chunk is being consumed. */ - public final HlsExtractor extractor; + public final HlsExtractorWrapper extractor; private int loadPosition; private volatile boolean loadFinished; @@ -67,7 +67,7 @@ public final class TsChunk extends HlsChunk { * @param chunkIndex The index of the chunk. * @param isLastChunk True if this is the last chunk in the media. False otherwise. */ - public TsChunk(DataSource dataSource, DataSpec dataSpec, HlsExtractor extractor, + public TsChunk(DataSource dataSource, DataSpec dataSpec, HlsExtractorWrapper extractor, int variantIndex, long startTimeUs, long endTimeUs, int chunkIndex, boolean isLastChunk) { super(dataSource, dataSpec); this.extractor = extractor; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java index af164a5f36..a22e17ce85 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java @@ -16,10 +16,7 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.SampleHolder; -import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.upstream.DataSource; -import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.ParsableByteArray; import java.io.IOException; @@ -28,73 +25,41 @@ import java.io.IOException; * Facilitates the extraction of AAC samples from elementary audio files formatted as AAC with ADTS * headers. */ -public class AdtsExtractor extends HlsExtractor { +public class AdtsExtractor implements HlsExtractor { private static final int MAX_PACKET_SIZE = 200; private final long firstSampleTimestamp; private final ParsableByteArray packetBuffer; - private final AdtsReader adtsReader; // Accessed only by the loading thread. + private AdtsReader adtsReader; private boolean firstPacket; - // Accessed by both the loading and consuming threads. - private volatile boolean prepared; - public AdtsExtractor(boolean shouldSpliceIn, long firstSampleTimestamp, BufferPool bufferPool) { - super(shouldSpliceIn); + public AdtsExtractor(long firstSampleTimestamp) { this.firstSampleTimestamp = firstSampleTimestamp; packetBuffer = new ParsableByteArray(MAX_PACKET_SIZE); - adtsReader = new AdtsReader(bufferPool); firstPacket = true; } + @Override + public void init(ExtractorOutput output) { + adtsReader = new AdtsReader(output.getTrackOutput(0)); + } + @Override public int getTrackCount() { - Assertions.checkState(prepared); return 1; } @Override public MediaFormat getFormat(int track) { - Assertions.checkState(prepared); - return adtsReader.getMediaFormat(); + return adtsReader.getFormat(); } @Override public boolean isPrepared() { - return prepared; - } - - @Override - public void release() { - adtsReader.release(); - } - - @Override - public long getLargestSampleTimestamp() { - return adtsReader.getLargestParsedTimestampUs(); - } - - @Override - public boolean getSample(int track, SampleHolder holder) { - Assertions.checkState(prepared); - Assertions.checkState(track == 0); - return adtsReader.getSample(holder); - } - - @Override - public void discardUntil(int track, long timeUs) { - Assertions.checkState(prepared); - Assertions.checkState(track == 0); - adtsReader.discardUntil(timeUs); - } - - @Override - public boolean hasSamples(int track) { - Assertions.checkState(prepared); - Assertions.checkState(track == 0); - return !adtsReader.isEmpty(); + return adtsReader != null && adtsReader.hasFormat(); } @Override @@ -111,16 +76,7 @@ public class AdtsExtractor extends HlsExtractor { // unnecessary to copy the data through packetBuffer. adtsReader.consume(packetBuffer, firstSampleTimestamp, firstPacket); firstPacket = false; - if (!prepared) { - prepared = adtsReader.hasMediaFormat(); - } return bytesRead; } - @Override - protected SampleQueue getSampleQueue(int track) { - Assertions.checkState(track == 0); - return adtsReader; - } - } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java index 0aa7b7c07b..81c643c7a8 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java @@ -17,7 +17,7 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.upstream.BufferPool; +import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; import com.google.android.exoplayer.util.CodecSpecificDataUtil; import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableBitArray; @@ -55,8 +55,8 @@ import java.util.Collections; // Used when reading the samples. private long timeUs; - public AdtsReader(BufferPool bufferPool) { - super(bufferPool); + public AdtsReader(TrackOutput output) { + super(output); adtsScratch = new ParsableBitArray(new byte[HEADER_SIZE + CRC_SIZE]); state = STATE_FINDING_SYNC; } @@ -78,17 +78,17 @@ import java.util.Collections; int targetLength = hasCrc ? HEADER_SIZE + CRC_SIZE : HEADER_SIZE; if (continueRead(data, adtsScratch.getData(), targetLength)) { parseHeader(); - startSample(timeUs); + output.startSample(timeUs, 0); bytesRead = 0; state = STATE_READING_SAMPLE; } break; case STATE_READING_SAMPLE: int bytesToRead = Math.min(data.bytesLeft(), sampleSize - bytesRead); - appendData(data, bytesToRead); + output.appendData(data, bytesToRead); bytesRead += bytesToRead; if (bytesRead == sampleSize) { - commitSample(C.SAMPLE_FLAG_SYNC); + output.commitSample(C.SAMPLE_FLAG_SYNC, 0, null); timeUs += frameDurationUs; bytesRead = 0; state = STATE_FINDING_SYNC; @@ -152,7 +152,7 @@ import java.util.Collections; private void parseHeader() { adtsScratch.setPosition(0); - if (!hasMediaFormat()) { + if (!hasFormat()) { int audioObjectType = adtsScratch.readBits(2) + 1; int sampleRateIndex = adtsScratch.readBits(4); adtsScratch.skipBits(1); @@ -167,7 +167,7 @@ import java.util.Collections; MediaFormat.NO_VALUE, audioParams.second, audioParams.first, Collections.singletonList(audioSpecificConfig)); frameDurationUs = (C.MICROS_PER_SECOND * 1024L) / mediaFormat.sampleRate; - setMediaFormat(mediaFormat); + setFormat(mediaFormat); } else { adtsScratch.skipBits(10); } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/ElementaryStreamReader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/ElementaryStreamReader.java index a8c5c7b562..8522cbeb18 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/ElementaryStreamReader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/ElementaryStreamReader.java @@ -15,16 +15,46 @@ */ package com.google.android.exoplayer.hls.parser; -import com.google.android.exoplayer.upstream.BufferPool; +import com.google.android.exoplayer.MediaFormat; +import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; import com.google.android.exoplayer.util.ParsableByteArray; /** * Extracts individual samples from an elementary media stream, preserving original order. */ -/* package */ abstract class ElementaryStreamReader extends SampleQueue { +/* package */ abstract class ElementaryStreamReader { - protected ElementaryStreamReader(BufferPool bufferPool) { - super(bufferPool); + protected final TrackOutput output; + private MediaFormat format; + + /** + * @param output A {@link TrackOutput} to which samples should be written. + */ + protected ElementaryStreamReader(TrackOutput output) { + this.output = output; + } + + /** + * True if the format of the stream is known. False otherwise. + */ + public boolean hasFormat() { + return format != null; + } + + /** + * Returns the format of the stream, or {@code null} if {@link #hasFormat()} is false. + */ + public MediaFormat getFormat() { + return format; + } + + /** + * Sets the format of the stream. + * + * @param format The format. + */ + protected void setFormat(MediaFormat format) { + this.format = format; } /** diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java index 96bc76b24f..ae9d0fe7a9 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java @@ -17,8 +17,8 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; +import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; import com.google.android.exoplayer.mp4.Mp4Util; -import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableBitArray; @@ -44,18 +44,20 @@ import java.util.List; private final NalUnitTargetBuffer sps; private final NalUnitTargetBuffer pps; private final NalUnitTargetBuffer sei; + private final ParsableByteArray seiWrapper; private int scratchEscapeCount; private int[] scratchEscapePositions; private boolean isKeyframe; - public H264Reader(BufferPool bufferPool, SeiReader seiReader) { - super(bufferPool); + public H264Reader(TrackOutput output, SeiReader seiReader) { + super(output); this.seiReader = seiReader; prefixFlags = new boolean[3]; sps = new NalUnitTargetBuffer(NAL_UNIT_TYPE_SPS, 128); pps = new NalUnitTargetBuffer(NAL_UNIT_TYPE_PPS, 128); sei = new NalUnitTargetBuffer(NAL_UNIT_TYPE_SEI, 128); + seiWrapper = new ParsableByteArray(); scratchEscapePositions = new int[10]; } @@ -67,7 +69,7 @@ import java.util.List; byte[] dataArray = data.data; // Append the data to the buffer. - appendData(data, data.bytesLeft()); + output.appendData(data, data.bytesLeft()); // Scan the appended data, processing NAL units as they are encountered while (offset < limit) { @@ -85,13 +87,13 @@ import java.util.List; int nalUnitType = Mp4Util.getNalUnitType(dataArray, nextNalUnitOffset); int nalUnitOffsetInData = nextNalUnitOffset - limit; if (nalUnitType == NAL_UNIT_TYPE_AUD) { - if (writingSample()) { - if (isKeyframe && !hasMediaFormat() && sps.isCompleted() && pps.isCompleted()) { + if (output.isWritingSample()) { + if (isKeyframe && !hasFormat() && sps.isCompleted() && pps.isCompleted()) { parseMediaFormat(sps, pps); } - commitSample(isKeyframe ? C.SAMPLE_FLAG_SYNC : 0, nalUnitOffsetInData); + output.commitSample(isKeyframe ? C.SAMPLE_FLAG_SYNC : 0, nalUnitOffsetInData, null); } - startSample(pesTimeUs, nalUnitOffsetInData); + output.startSample(pesTimeUs, nalUnitOffsetInData); isKeyframe = false; } else if (nalUnitType == NAL_UNIT_TYPE_IDR) { isKeyframe = true; @@ -118,7 +120,7 @@ import java.util.List; } private void feedNalUnitTargetBuffersStart(int nalUnitType) { - if (!hasMediaFormat()) { + if (!hasFormat()) { sps.startNalUnit(nalUnitType); pps.startNalUnit(nalUnitType); } @@ -126,7 +128,7 @@ import java.util.List; } private void feedNalUnitTargetBuffersData(byte[] dataArray, int offset, int limit) { - if (!hasMediaFormat()) { + if (!hasFormat()) { sps.appendToNalUnit(dataArray, offset, limit); pps.appendToNalUnit(dataArray, offset, limit); } @@ -138,7 +140,8 @@ import java.util.List; pps.endNalUnit(discardPadding); if (sei.endNalUnit(discardPadding)) { int unescapedLength = unescapeStream(sei.nalData, sei.nalLength); - seiReader.read(sei.nalData, 0, unescapedLength, pesTimeUs); + seiWrapper.reset(sei.nalData, unescapedLength); + seiReader.consume(seiWrapper, pesTimeUs, true); } } @@ -230,7 +233,7 @@ import java.util.List; } // Set the format. - setMediaFormat(MediaFormat.createVideoFormat(MimeTypes.VIDEO_H264, MediaFormat.NO_VALUE, + setFormat(MediaFormat.createVideoFormat(MimeTypes.VIDEO_H264, MediaFormat.NO_VALUE, frameWidth, frameHeight, initializationData)); } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java index 88aef4a0d6..92a4ac6717 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java @@ -16,55 +16,62 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.upstream.DataSource; +import com.google.android.exoplayer.util.ParsableByteArray; import java.io.IOException; /** * Facilitates extraction of media samples for HLS playbacks. */ -// TODO: Consider consolidating more common logic in this base class. -public abstract class HlsExtractor { +public interface HlsExtractor { - private final boolean shouldSpliceIn; + /** + * An object to which extracted data should be output. + */ + public interface ExtractorOutput { - // Accessed only by the consuming thread. - private boolean spliceConfigured; + /** + * Obtains a {@link TrackOutput} to which extracted data should be output for a given track. + * + * @param trackId A stable track id. + * @return The corresponding {@link TrackOutput}. + */ + TrackOutput getTrackOutput(int trackId); - public HlsExtractor(boolean shouldSpliceIn) { - this.shouldSpliceIn = shouldSpliceIn; } /** - * Attempts to configure a splice from this extractor to the next. - *

- * The splice is performed such that for each track the samples read from the next extractor - * start with a keyframe, and continue from where the samples read from this extractor finish. - * A successful splice may discard samples from either or both extractors. - *

- * Splice configuration may fail if the next extractor is not yet in a state that allows the - * splice to be performed. Calling this method is a noop if the splice has already been - * configured. Hence this method should be called repeatedly during the window within which a - * splice can be performed. - * - * @param nextExtractor The extractor being spliced to. + * An object to which extracted data belonging to a given track should be output. */ - public final void configureSpliceTo(HlsExtractor nextExtractor) { - if (spliceConfigured || !nextExtractor.shouldSpliceIn || !nextExtractor.isPrepared()) { - // The splice is already configured, or the next extractor doesn't want to be spliced in, or - // the next extractor isn't ready to be spliced in. - return; - } - boolean spliceConfigured = true; - int trackCount = getTrackCount(); - for (int i = 0; i < trackCount; i++) { - spliceConfigured &= getSampleQueue(i).configureSpliceTo(nextExtractor.getSampleQueue(i)); - } - this.spliceConfigured = spliceConfigured; - return; + public interface TrackOutput { + + int appendData(DataSource dataSource, int length) throws IOException; + + void appendData(ParsableByteArray data, int length); + + void startSample(long timeUs, int offset); + + void commitSample(int flags, int offset, byte[] encryptionKey); + + boolean isWritingSample(); + } + /** + * Initializes the extractor. + * + * @param output An {@link ExtractorOutput} to which extracted data should be output. + */ + void init(ExtractorOutput output); + + /** + * Whether the extractor is prepared. + * + * @return True if the extractor is prepared. False otherwise. + */ + boolean isPrepared(); + /** * Gets the number of available tracks. *

@@ -72,7 +79,7 @@ public abstract class HlsExtractor { * * @return The number of available tracks. */ - public abstract int getTrackCount(); + int getTrackCount(); /** * Gets the format of the specified track. @@ -82,54 +89,7 @@ public abstract class HlsExtractor { * @param track The track index. * @return The corresponding format. */ - public abstract MediaFormat getFormat(int track); - - /** - * Whether the extractor is prepared. - * - * @return True if the extractor is prepared. False otherwise. - */ - public abstract boolean isPrepared(); - - /** - * Releases the extractor, recycling any pending or incomplete samples to the sample pool. - *

- * This method should not be called whilst {@link #read(DataSource)} is also being invoked. - */ - public abstract void release(); - - /** - * Gets the largest timestamp of any sample parsed by the extractor. - * - * @return The largest timestamp, or {@link Long#MIN_VALUE} if no samples have been parsed. - */ - public abstract long getLargestSampleTimestamp(); - - /** - * Gets the next sample for the specified track. - * - * @param track The track from which to read. - * @param holder A {@link SampleHolder} into which the sample should be read. - * @return True if a sample was read. False otherwise. - */ - public abstract boolean getSample(int track, SampleHolder holder); - - /** - * Discards samples for the specified track up to the specified time. - * - * @param track The track from which samples should be discarded. - * @param timeUs The time up to which samples should be discarded, in microseconds. - */ - public abstract void discardUntil(int track, long timeUs); - - /** - * Whether samples are available for reading from {@link #getSample(int, SampleHolder)} for the - * specified track. - * - * @return True if samples are available for reading from {@link #getSample(int, SampleHolder)} - * for the specified track. False otherwise. - */ - public abstract boolean hasSamples(int track); + MediaFormat getFormat(int track); /** * Reads up to a single TS packet. @@ -138,14 +98,6 @@ public abstract class HlsExtractor { * @throws IOException If an error occurred reading from the source. * @return The number of bytes read from the source. */ - public abstract int read(DataSource dataSource) throws IOException; - - /** - * Gets the {@link SampleQueue} for the specified track. - * - * @param track The track index. - * @return The corresponding sample queue. - */ - protected abstract SampleQueue getSampleQueue(int track); + int read(DataSource dataSource) throws IOException; } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java new file mode 100644 index 0000000000..b44626722f --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java @@ -0,0 +1,198 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.hls.parser; + +import com.google.android.exoplayer.MediaFormat; +import com.google.android.exoplayer.SampleHolder; +import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; +import com.google.android.exoplayer.upstream.BufferPool; +import com.google.android.exoplayer.upstream.DataSource; +import com.google.android.exoplayer.util.Assertions; + +import android.util.SparseArray; + +import java.io.IOException; + +/** + * Wraps a {@link HlsExtractor}, adding functionality to enable reading of the extracted samples. + */ +public final class HlsExtractorWrapper implements HlsExtractor.ExtractorOutput { + + private final BufferPool bufferPool; + private final HlsExtractor extractor; + private final boolean shouldSpliceIn; + + private SparseArray sampleQueues; + + // Accessed only by the consuming thread. + private boolean spliceConfigured; + + public HlsExtractorWrapper(BufferPool bufferPool, HlsExtractor extractor, + boolean shouldSpliceIn) { + this.bufferPool = bufferPool; + this.extractor = extractor; + this.shouldSpliceIn = shouldSpliceIn; + sampleQueues = new SparseArray(); + extractor.init(this); + } + + /** + * Attempts to configure a splice from this extractor to the next. + *

+ * The splice is performed such that for each track the samples read from the next extractor + * start with a keyframe, and continue from where the samples read from this extractor finish. + * A successful splice may discard samples from either or both extractors. + *

+ * Splice configuration may fail if the next extractor is not yet in a state that allows the + * splice to be performed. Calling this method is a noop if the splice has already been + * configured. Hence this method should be called repeatedly during the window within which a + * splice can be performed. + * + * @param nextExtractor The extractor being spliced to. + */ + public final void configureSpliceTo(HlsExtractorWrapper nextExtractor) { + if (spliceConfigured || !nextExtractor.shouldSpliceIn || !nextExtractor.isPrepared()) { + // The splice is already configured, or the next extractor doesn't want to be spliced in, or + // the next extractor isn't ready to be spliced in. + return; + } + boolean spliceConfigured = true; + int trackCount = getTrackCount(); + for (int i = 0; i < trackCount; i++) { + SampleQueue currentSampleQueue = sampleQueues.valueAt(i); + SampleQueue nextSampleQueue = nextExtractor.sampleQueues.valueAt(i); + spliceConfigured &= currentSampleQueue.configureSpliceTo(nextSampleQueue); + } + this.spliceConfigured = spliceConfigured; + return; + } + + /** + * Gets the number of available tracks. + *

+ * This method should only be called after the extractor has been prepared. + * + * @return The number of available tracks. + */ + public int getTrackCount() { + return extractor.getTrackCount(); + } + + /** + * Gets the format of the specified track. + *

+ * This method must only be called after the extractor has been prepared. + * + * @param track The track index. + * @return The corresponding format. + */ + public MediaFormat getFormat(int track) { + return extractor.getFormat(track); + } + + /** + * Whether the extractor is prepared. + * + * @return True if the extractor is prepared. False otherwise. + */ + public boolean isPrepared() { + return extractor.isPrepared(); + } + + /** + * Releases the extractor, recycling any pending or incomplete samples to the sample pool. + *

+ * This method should not be called whilst {@link #read(DataSource)} is also being invoked. + */ + public void release() { + for (int i = 0; i < sampleQueues.size(); i++) { + sampleQueues.valueAt(i).release(); + } + } + + /** + * Gets the largest timestamp of any sample parsed by the extractor. + * + * @return The largest timestamp, or {@link Long#MIN_VALUE} if no samples have been parsed. + */ + public long getLargestSampleTimestamp() { + long largestParsedTimestampUs = Long.MIN_VALUE; + for (int i = 0; i < sampleQueues.size(); i++) { + largestParsedTimestampUs = Math.max(largestParsedTimestampUs, + sampleQueues.valueAt(i).getLargestParsedTimestampUs()); + } + return largestParsedTimestampUs; + } + + /** + * Gets the next sample for the specified track. + * + * @param track The track from which to read. + * @param holder A {@link SampleHolder} into which the sample should be read. + * @return True if a sample was read. False otherwise. + */ + public boolean getSample(int track, SampleHolder holder) { + Assertions.checkState(isPrepared()); + return sampleQueues.valueAt(track).getSample(holder); + } + + /** + * Discards samples for the specified track up to the specified time. + * + * @param track The track from which samples should be discarded. + * @param timeUs The time up to which samples should be discarded, in microseconds. + */ + public void discardUntil(int track, long timeUs) { + Assertions.checkState(isPrepared()); + sampleQueues.valueAt(track).discardUntil(timeUs); + } + + /** + * Whether samples are available for reading from {@link #getSample(int, SampleHolder)} for the + * specified track. + * + * @return True if samples are available for reading from {@link #getSample(int, SampleHolder)} + * for the specified track. False otherwise. + */ + public boolean hasSamples(int track) { + Assertions.checkState(isPrepared()); + return !sampleQueues.valueAt(track).isEmpty(); + } + + /** + * Reads up to a single TS packet. + * + * @param dataSource The {@link DataSource} from which to read. + * @throws IOException If an error occurred reading from the source. + * @return The number of bytes read from the source. + */ + public int read(DataSource dataSource) throws IOException { + return extractor.read(dataSource); + } + + // ExtractorOutput implementation. + + @Override + public TrackOutput getTrackOutput(int id) { + SampleQueue sampleQueue = sampleQueues.get(id); + if (sampleQueue == null) { + sampleQueue = new SampleQueue(bufferPool); + sampleQueues.put(id, sampleQueue); + } + return sampleQueue; + } + +} diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java index a9d51d1515..a76bcdbaa4 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java @@ -17,7 +17,7 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.upstream.BufferPool; +import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; import com.google.android.exoplayer.util.ParsableByteArray; /** @@ -25,24 +25,24 @@ import com.google.android.exoplayer.util.ParsableByteArray; */ /* package */ class Id3Reader extends ElementaryStreamReader { - public Id3Reader(BufferPool bufferPool) { - super(bufferPool); - setMediaFormat(MediaFormat.createId3Format()); + public Id3Reader(TrackOutput output) { + super(output); + setFormat(MediaFormat.createId3Format()); } @Override public void consume(ParsableByteArray data, long pesTimeUs, boolean startOfPacket) { if (startOfPacket) { - startSample(pesTimeUs); + output.startSample(pesTimeUs, 0); } - if (writingSample()) { - appendData(data, data.bytesLeft()); + if (output.isWritingSample()) { + output.appendData(data, data.bytesLeft()); } } @Override public void packetFinished() { - commitSample(C.SAMPLE_FLAG_SYNC); + output.commitSample(C.SAMPLE_FLAG_SYNC, 0, null); } } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java index bc2ce2a0a6..5e9bd7950f 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java @@ -16,8 +16,8 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.C; -import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; +import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.util.ParsableByteArray; @@ -29,7 +29,7 @@ import java.io.IOException; * the first sample returned from the queue is a keyframe, allowing splicing to another queue, and * so on. */ -/* package */ abstract class SampleQueue { +public final class SampleQueue implements TrackOutput { private final RollingSampleBuffer rollingBuffer; private final SampleHolder sampleInfoHolder; @@ -43,10 +43,9 @@ import java.io.IOException; private boolean writingSample; // Accessed by both the loading and consuming threads. - private volatile MediaFormat mediaFormat; private volatile long largestParsedTimestampUs; - protected SampleQueue(BufferPool bufferPool) { + public SampleQueue(BufferPool bufferPool) { rollingBuffer = new RollingSampleBuffer(bufferPool); sampleInfoHolder = new SampleHolder(SampleHolder.BUFFER_REPLACEMENT_MODE_DISABLED); needKeyframe = true; @@ -65,14 +64,6 @@ import java.io.IOException; return largestParsedTimestampUs; } - public boolean hasMediaFormat() { - return mediaFormat != null; - } - - public MediaFormat getMediaFormat() { - return mediaFormat; - } - public boolean isEmpty() { return !advanceToEligibleSample(); } @@ -169,45 +160,34 @@ import java.io.IOException; return true; } - // Called by the loading thread. + // TrackOutput implementation. Called by the loading thread. - protected boolean writingSample() { - return writingSample; + @Override + public int appendData(DataSource dataSource, int length) throws IOException { + return rollingBuffer.appendData(dataSource, length); } - protected void setMediaFormat(MediaFormat mediaFormat) { - this.mediaFormat = mediaFormat; + @Override + public void appendData(ParsableByteArray buffer, int length) { + rollingBuffer.appendData(buffer, length); } - protected void startSample(long sampleTimeUs) { - startSample(sampleTimeUs, 0); - } - - protected void startSample(long sampleTimeUs, int offset) { + @Override + public void startSample(long sampleTimeUs, int offset) { writingSample = true; largestParsedTimestampUs = Math.max(largestParsedTimestampUs, sampleTimeUs); rollingBuffer.startSample(sampleTimeUs, offset); } - protected int appendData(DataSource dataSource, int length) throws IOException { - return rollingBuffer.appendData(dataSource, length); - } - - protected void appendData(ParsableByteArray buffer, int length) { - rollingBuffer.appendData(buffer, length); - } - - protected void commitSample(int flags) { - commitSample(flags, 0, null); - } - - protected void commitSample(int flags, int offset) { - commitSample(flags, offset, null); - } - - protected void commitSample(int flags, int offset, byte[] encryptionKey) { + @Override + public void commitSample(int flags, int offset, byte[] encryptionKey) { rollingBuffer.commitSample(flags, offset, encryptionKey); writingSample = false; } + @Override + public boolean isWritingSample() { + return writingSample; + } + } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java index f2f1def89b..2bf48be730 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java @@ -17,8 +17,8 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; +import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; import com.google.android.exoplayer.text.eia608.Eia608Parser; -import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.util.ParsableByteArray; /** @@ -27,20 +27,17 @@ import com.google.android.exoplayer.util.ParsableByteArray; * TODO: Technically, we shouldn't allow a sample to be read from the queue until we're sure that * a sample with an earlier timestamp won't be added to it. */ -/* package */ class SeiReader extends SampleQueue { +/* package */ class SeiReader extends ElementaryStreamReader { - private final ParsableByteArray seiBuffer; - - public SeiReader(BufferPool bufferPool) { - super(bufferPool); - setMediaFormat(MediaFormat.createEia608Format()); - seiBuffer = new ParsableByteArray(); + public SeiReader(TrackOutput output) { + super(output); + setFormat(MediaFormat.createEia608Format()); } - public void read(byte[] data, int position, int limit, long pesTimeUs) { - seiBuffer.reset(data, limit); + @Override + public void consume(ParsableByteArray seiBuffer, long pesTimeUs, boolean startOfPacket) { // Skip the NAL prefix and type. - seiBuffer.setPosition(position + 4); + seiBuffer.skip(4); int b; while (seiBuffer.bytesLeft() > 1 /* last byte will be rbsp_trailing_bits */) { @@ -58,13 +55,18 @@ import com.google.android.exoplayer.util.ParsableByteArray; } while (b == 0xFF); // Process the payload. We only support EIA-608 payloads currently. if (Eia608Parser.isSeiMessageEia608(payloadType, payloadSize, seiBuffer)) { - startSample(pesTimeUs); - appendData(seiBuffer, payloadSize); - commitSample(C.SAMPLE_FLAG_SYNC); + output.startSample(pesTimeUs, 0); + output.appendData(seiBuffer, payloadSize); + output.commitSample(C.SAMPLE_FLAG_SYNC, 0, null); } else { seiBuffer.skip(payloadSize); } } } + @Override + public void packetFinished() { + // Do nothing. + } + } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java index 8468254440..15eae10354 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java @@ -17,8 +17,6 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.SampleHolder; -import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.ParsableBitArray; @@ -32,7 +30,7 @@ import java.io.IOException; /** * Facilitates the extraction of data from the MPEG-2 TS container format. */ -public final class TsExtractor extends HlsExtractor { +public final class TsExtractor implements HlsExtractor { private static final String TAG = "TsExtractor"; @@ -48,13 +46,13 @@ public final class TsExtractor extends HlsExtractor { private static final long MAX_PTS = 0x1FFFFFFFFL; private final ParsableByteArray tsPacketBuffer; - private final SparseArray sampleQueues; // Indexed by streamType + private final SparseArray streamReaders; // Indexed by streamType private final SparseArray tsPayloadReaders; // Indexed by pid - private final BufferPool bufferPool; private final long firstSampleTimestamp; private final ParsableBitArray tsScratch; // Accessed only by the loading thread. + private ExtractorOutput output; private int tsPacketBytesRead; private long timestampOffsetUs; private long lastPts; @@ -62,28 +60,31 @@ public final class TsExtractor extends HlsExtractor { // Accessed by both the loading and consuming threads. private volatile boolean prepared; - public TsExtractor(boolean shouldSpliceIn, long firstSampleTimestamp, BufferPool bufferPool) { - super(shouldSpliceIn); + public TsExtractor(long firstSampleTimestamp) { this.firstSampleTimestamp = firstSampleTimestamp; - this.bufferPool = bufferPool; tsScratch = new ParsableBitArray(new byte[3]); tsPacketBuffer = new ParsableByteArray(TS_PACKET_SIZE); - sampleQueues = new SparseArray(); + streamReaders = new SparseArray(); tsPayloadReaders = new SparseArray(); tsPayloadReaders.put(TS_PAT_PID, new PatReader()); lastPts = Long.MIN_VALUE; } + @Override + public void init(ExtractorOutput output) { + this.output = output; + } + @Override public int getTrackCount() { Assertions.checkState(prepared); - return sampleQueues.size(); + return streamReaders.size(); } @Override public MediaFormat getFormat(int track) { Assertions.checkState(prepared); - return sampleQueues.valueAt(track).getMediaFormat(); + return streamReaders.valueAt(track).getFormat(); } @Override @@ -91,48 +92,13 @@ public final class TsExtractor extends HlsExtractor { return prepared; } - @Override - public void release() { - for (int i = 0; i < sampleQueues.size(); i++) { - sampleQueues.valueAt(i).release(); - } - } - - @Override - public long getLargestSampleTimestamp() { - long largestParsedTimestampUs = Long.MIN_VALUE; - for (int i = 0; i < sampleQueues.size(); i++) { - largestParsedTimestampUs = Math.max(largestParsedTimestampUs, - sampleQueues.valueAt(i).getLargestParsedTimestampUs()); - } - return largestParsedTimestampUs; - } - - @Override - public boolean getSample(int track, SampleHolder holder) { - Assertions.checkState(prepared); - return sampleQueues.valueAt(track).getSample(holder); - } - - @Override - public void discardUntil(int track, long timeUs) { - Assertions.checkState(prepared); - sampleQueues.valueAt(track).discardUntil(timeUs); - } - - @Override - public boolean hasSamples(int track) { - Assertions.checkState(prepared); - return !sampleQueues.valueAt(track).isEmpty(); - } - private boolean checkPrepared() { - int pesPayloadReaderCount = sampleQueues.size(); + int pesPayloadReaderCount = streamReaders.size(); if (pesPayloadReaderCount == 0) { return false; } for (int i = 0; i < pesPayloadReaderCount; i++) { - if (!sampleQueues.valueAt(i).hasMediaFormat()) { + if (!streamReaders.valueAt(i).hasFormat()) { return false; } } @@ -183,7 +149,7 @@ public final class TsExtractor extends HlsExtractor { if (payloadExists) { TsPayloadReader payloadReader = tsPayloadReaders.get(pid); if (payloadReader != null) { - payloadReader.consume(tsPacketBuffer, payloadUnitStartIndicator); + payloadReader.consume(tsPacketBuffer, payloadUnitStartIndicator, output); } } @@ -194,11 +160,6 @@ public final class TsExtractor extends HlsExtractor { return bytesRead; } - @Override - protected SampleQueue getSampleQueue(int track) { - return sampleQueues.valueAt(track); - } - /** * Adjusts a PTS value to the corresponding time in microseconds, accounting for PTS wraparound. * @@ -231,7 +192,8 @@ public final class TsExtractor extends HlsExtractor { */ private abstract static class TsPayloadReader { - public abstract void consume(ParsableByteArray data, boolean payloadUnitStartIndicator); + public abstract void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, + ExtractorOutput output); } @@ -247,7 +209,8 @@ public final class TsExtractor extends HlsExtractor { } @Override - public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator) { + public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, + ExtractorOutput output) { // Skip pointer. if (payloadUnitStartIndicator) { int pointerField = data.readUnsignedByte(); @@ -286,7 +249,8 @@ public final class TsExtractor extends HlsExtractor { } @Override - public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator) { + public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, + ExtractorOutput output) { // Skip pointer. if (payloadUnitStartIndicator) { int pointerField = data.readUnsignedByte(); @@ -323,27 +287,28 @@ public final class TsExtractor extends HlsExtractor { data.skip(esInfoLength); entriesSize -= esInfoLength + 5; - if (sampleQueues.get(streamType) != null) { + if (streamReaders.get(streamType) != null) { continue; } ElementaryStreamReader pesPayloadReader = null; switch (streamType) { case TS_STREAM_TYPE_AAC: - pesPayloadReader = new AdtsReader(bufferPool); + pesPayloadReader = new AdtsReader(output.getTrackOutput(TS_STREAM_TYPE_AAC)); break; case TS_STREAM_TYPE_H264: - SeiReader seiReader = new SeiReader(bufferPool); - sampleQueues.put(TS_STREAM_TYPE_EIA608, seiReader); - pesPayloadReader = new H264Reader(bufferPool, seiReader); + SeiReader seiReader = new SeiReader(output.getTrackOutput(TS_STREAM_TYPE_EIA608)); + streamReaders.put(TS_STREAM_TYPE_EIA608, seiReader); + pesPayloadReader = new H264Reader(output.getTrackOutput(TS_STREAM_TYPE_H264), + seiReader); break; case TS_STREAM_TYPE_ID3: - pesPayloadReader = new Id3Reader(bufferPool); + pesPayloadReader = new Id3Reader(output.getTrackOutput(TS_STREAM_TYPE_ID3)); break; } if (pesPayloadReader != null) { - sampleQueues.put(streamType, pesPayloadReader); + streamReaders.put(streamType, pesPayloadReader); tsPayloadReaders.put(elementaryPid, new PesReader(pesPayloadReader)); } } @@ -387,7 +352,8 @@ public final class TsExtractor extends HlsExtractor { } @Override - public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator) { + public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, + ExtractorOutput output) { if (payloadUnitStartIndicator) { switch (state) { case STATE_FINDING_HEADER: From 94dd9c41f4cd048baa3b62193a7a5c215c0ed8b1 Mon Sep 17 00:00:00 2001 From: Damien Merenne Date: Thu, 12 Mar 2015 10:23:29 +0100 Subject: [PATCH 34/69] Fix AES decryption of HLS streams. As per http://tools.ietf.org/html/draft-pantos-http-live-streaming-04#section-5.2, the initializaton vector (IV) of the AES decryption algorithm should be set to: - the IV attribute value if present, - the sequence number otherwise. Currently, the IV is set once and use over all next media sequences where the IV attribute is not set. The fix is to use the provided IV if given or use the current media sequence number. --- .../android/exoplayer/hls/HlsPlaylistParser.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java index 76db4d773e..5c7b23f865 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java @@ -233,9 +233,6 @@ public final class HlsPlaylistParser implements NetworkLoadable.Parser Date: Thu, 12 Mar 2015 19:42:00 +0000 Subject: [PATCH 35/69] Simplify encryption handling in HLS. --- .../android/exoplayer/hls/HlsChunkSource.java | 2 +- .../android/exoplayer/hls/HlsMediaPlaylist.java | 9 +++++---- .../android/exoplayer/hls/HlsPlaylistParser.java | 6 +++++- .../exoplayer/hls/HlsMediaPlaylistParserTest.java | 14 +++++++------- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index cd46f11052..f1be4678b3 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -306,7 +306,7 @@ public class HlsChunkSource { Uri chunkUri = UriUtil.resolveToUri(mediaPlaylist.baseUri, segment.url); // Check if encryption is specified. - if (HlsMediaPlaylist.ENCRYPTION_METHOD_AES_128.equals(segment.encryptionMethod)) { + if (segment.isEncrypted) { Uri keyUri = UriUtil.resolveToUri(mediaPlaylist.baseUri, segment.encryptionKeyUri); if (!keyUri.equals(encryptionKeyUri)) { // Encryption is specified and the key has changed. diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java index 16e90083d0..ec4c538155 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java @@ -28,24 +28,25 @@ public final class HlsMediaPlaylist extends HlsPlaylist { * Media segment reference. */ public static final class Segment implements Comparable { + public final boolean discontinuity; public final double durationSecs; public final String url; public final long startTimeUs; - public final String encryptionMethod; + public final boolean isEncrypted; public final String encryptionKeyUri; public final String encryptionIV; public final int byterangeOffset; public final int byterangeLength; public Segment(String uri, double durationSecs, boolean discontinuity, long startTimeUs, - String encryptionMethod, String encryptionKeyUri, String encryptionIV, - int byterangeOffset, int byterangeLength) { + boolean isEncrypted, String encryptionKeyUri, String encryptionIV, int byterangeOffset, + int byterangeLength) { this.url = uri; this.durationSecs = durationSecs; this.discontinuity = discontinuity; this.startTimeUs = startTimeUs; - this.encryptionMethod = encryptionMethod; + this.isEncrypted = isEncrypted; this.encryptionKeyUri = encryptionKeyUri; this.encryptionIV = encryptionIV; this.byterangeOffset = byterangeOffset; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java index 5c7b23f865..95453eb103 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java @@ -64,6 +64,9 @@ public final class HlsPlaylistParser implements NetworkLoadable.Parser Date: Thu, 12 Mar 2015 19:42:00 +0000 Subject: [PATCH 36/69] Simplify encryption handling in HLS. --- .../android/exoplayer/hls/HlsChunkSource.java | 2 +- .../exoplayer/hls/HlsMediaPlaylist.java | 9 ++-- .../exoplayer/hls/HlsPlaylistParser.java | 45 ++++++++++--------- .../hls/HlsMediaPlaylistParserTest.java | 14 +++--- 4 files changed, 37 insertions(+), 33 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index cd46f11052..f1be4678b3 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -306,7 +306,7 @@ public class HlsChunkSource { Uri chunkUri = UriUtil.resolveToUri(mediaPlaylist.baseUri, segment.url); // Check if encryption is specified. - if (HlsMediaPlaylist.ENCRYPTION_METHOD_AES_128.equals(segment.encryptionMethod)) { + if (segment.isEncrypted) { Uri keyUri = UriUtil.resolveToUri(mediaPlaylist.baseUri, segment.encryptionKeyUri); if (!keyUri.equals(encryptionKeyUri)) { // Encryption is specified and the key has changed. diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java index 16e90083d0..ec4c538155 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsMediaPlaylist.java @@ -28,24 +28,25 @@ public final class HlsMediaPlaylist extends HlsPlaylist { * Media segment reference. */ public static final class Segment implements Comparable { + public final boolean discontinuity; public final double durationSecs; public final String url; public final long startTimeUs; - public final String encryptionMethod; + public final boolean isEncrypted; public final String encryptionKeyUri; public final String encryptionIV; public final int byterangeOffset; public final int byterangeLength; public Segment(String uri, double durationSecs, boolean discontinuity, long startTimeUs, - String encryptionMethod, String encryptionKeyUri, String encryptionIV, - int byterangeOffset, int byterangeLength) { + boolean isEncrypted, String encryptionKeyUri, String encryptionIV, int byterangeOffset, + int byterangeLength) { this.url = uri; this.durationSecs = durationSecs; this.discontinuity = discontinuity; this.startTimeUs = startTimeUs; - this.encryptionMethod = encryptionMethod; + this.isEncrypted = isEncrypted; this.encryptionKeyUri = encryptionKeyUri; this.encryptionIV = encryptionIV; this.byterangeOffset = byterangeOffset; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java index 5c7b23f865..939e750fb3 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java @@ -64,6 +64,9 @@ public final class HlsPlaylistParser implements NetworkLoadable.Parser Date: Fri, 13 Mar 2015 11:44:27 +0000 Subject: [PATCH 37/69] Further simplify HlsExtractor interface. - Move to builder naming. - Propagate formats to the TrackOutput instances, rather than having them be read through the Extractor. There was actually some weird indexing going on here before (which happened to work, but wasn't well defined). --- .../exoplayer/hls/parser/AdtsExtractor.java | 21 +------ .../exoplayer/hls/parser/AdtsReader.java | 4 +- .../hls/parser/ElementaryStreamReader.java | 25 -------- .../exoplayer/hls/parser/H264Reader.java | 8 +-- .../exoplayer/hls/parser/HlsExtractor.java | 50 ++++++--------- .../hls/parser/HlsExtractorWrapper.java | 34 +++++++---- .../exoplayer/hls/parser/Id3Reader.java | 2 +- .../exoplayer/hls/parser/SampleQueue.java | 16 +++++ .../exoplayer/hls/parser/SeiReader.java | 2 +- .../exoplayer/hls/parser/TsExtractor.java | 61 ++++--------------- 10 files changed, 78 insertions(+), 145 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java index a22e17ce85..5915ea6885 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer.hls.parser; -import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.util.ParsableByteArray; @@ -43,23 +42,9 @@ public class AdtsExtractor implements HlsExtractor { } @Override - public void init(ExtractorOutput output) { - adtsReader = new AdtsReader(output.getTrackOutput(0)); - } - - @Override - public int getTrackCount() { - return 1; - } - - @Override - public MediaFormat getFormat(int track) { - return adtsReader.getFormat(); - } - - @Override - public boolean isPrepared() { - return adtsReader != null && adtsReader.hasFormat(); + public void init(TrackOutputBuilder output) { + adtsReader = new AdtsReader(output.buildOutput(0)); + output.allOutputsBuilt(); } @Override diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java index 81c643c7a8..fc7417a60a 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java @@ -152,7 +152,7 @@ import java.util.Collections; private void parseHeader() { adtsScratch.setPosition(0); - if (!hasFormat()) { + if (!output.hasFormat()) { int audioObjectType = adtsScratch.readBits(2) + 1; int sampleRateIndex = adtsScratch.readBits(4); adtsScratch.skipBits(1); @@ -167,7 +167,7 @@ import java.util.Collections; MediaFormat.NO_VALUE, audioParams.second, audioParams.first, Collections.singletonList(audioSpecificConfig)); frameDurationUs = (C.MICROS_PER_SECOND * 1024L) / mediaFormat.sampleRate; - setFormat(mediaFormat); + output.setFormat(mediaFormat); } else { adtsScratch.skipBits(10); } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/ElementaryStreamReader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/ElementaryStreamReader.java index 8522cbeb18..a441ff35b9 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/ElementaryStreamReader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/ElementaryStreamReader.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer.hls.parser; -import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; import com.google.android.exoplayer.util.ParsableByteArray; @@ -25,7 +24,6 @@ import com.google.android.exoplayer.util.ParsableByteArray; /* package */ abstract class ElementaryStreamReader { protected final TrackOutput output; - private MediaFormat format; /** * @param output A {@link TrackOutput} to which samples should be written. @@ -34,29 +32,6 @@ import com.google.android.exoplayer.util.ParsableByteArray; this.output = output; } - /** - * True if the format of the stream is known. False otherwise. - */ - public boolean hasFormat() { - return format != null; - } - - /** - * Returns the format of the stream, or {@code null} if {@link #hasFormat()} is false. - */ - public MediaFormat getFormat() { - return format; - } - - /** - * Sets the format of the stream. - * - * @param format The format. - */ - protected void setFormat(MediaFormat format) { - this.format = format; - } - /** * Consumes (possibly partial) payload data. * diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java index ae9d0fe7a9..40b3b1ca32 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java @@ -88,7 +88,7 @@ import java.util.List; int nalUnitOffsetInData = nextNalUnitOffset - limit; if (nalUnitType == NAL_UNIT_TYPE_AUD) { if (output.isWritingSample()) { - if (isKeyframe && !hasFormat() && sps.isCompleted() && pps.isCompleted()) { + if (isKeyframe && !output.hasFormat() && sps.isCompleted() && pps.isCompleted()) { parseMediaFormat(sps, pps); } output.commitSample(isKeyframe ? C.SAMPLE_FLAG_SYNC : 0, nalUnitOffsetInData, null); @@ -120,7 +120,7 @@ import java.util.List; } private void feedNalUnitTargetBuffersStart(int nalUnitType) { - if (!hasFormat()) { + if (!output.hasFormat()) { sps.startNalUnit(nalUnitType); pps.startNalUnit(nalUnitType); } @@ -128,7 +128,7 @@ import java.util.List; } private void feedNalUnitTargetBuffersData(byte[] dataArray, int offset, int limit) { - if (!hasFormat()) { + if (!output.hasFormat()) { sps.appendToNalUnit(dataArray, offset, limit); pps.appendToNalUnit(dataArray, offset, limit); } @@ -233,7 +233,7 @@ import java.util.List; } // Set the format. - setFormat(MediaFormat.createVideoFormat(MimeTypes.VIDEO_H264, MediaFormat.NO_VALUE, + output.setFormat(MediaFormat.createVideoFormat(MimeTypes.VIDEO_H264, MediaFormat.NO_VALUE, frameWidth, frameHeight, initializationData)); } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java index 92a4ac6717..e3b3e5468f 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java @@ -29,15 +29,21 @@ public interface HlsExtractor { /** * An object to which extracted data should be output. */ - public interface ExtractorOutput { + public interface TrackOutputBuilder { /** - * Obtains a {@link TrackOutput} to which extracted data should be output for a given track. + * Invoked to build a {@link TrackOutput} to which data should be output for a given track. * * @param trackId A stable track id. * @return The corresponding {@link TrackOutput}. */ - TrackOutput getTrackOutput(int trackId); + TrackOutput buildOutput(int trackId); + + /** + * Invoked when all {@link TrackOutput}s have been built, meaning {@link #buildOutput(int)} + * will not be invoked again. + */ + void allOutputsBuilt(); } @@ -46,6 +52,12 @@ public interface HlsExtractor { */ public interface TrackOutput { + boolean hasFormat(); + + void setFormat(MediaFormat format); + + boolean isWritingSample(); + int appendData(DataSource dataSource, int length) throws IOException; void appendData(ParsableByteArray data, int length); @@ -54,42 +66,14 @@ public interface HlsExtractor { void commitSample(int flags, int offset, byte[] encryptionKey); - boolean isWritingSample(); - } /** * Initializes the extractor. * - * @param output An {@link ExtractorOutput} to which extracted data should be output. + * @param output A {@link TrackOutputBuilder} to which extracted data should be output. */ - void init(ExtractorOutput output); - - /** - * Whether the extractor is prepared. - * - * @return True if the extractor is prepared. False otherwise. - */ - boolean isPrepared(); - - /** - * Gets the number of available tracks. - *

- * This method should only be called after the extractor has been prepared. - * - * @return The number of available tracks. - */ - int getTrackCount(); - - /** - * Gets the format of the specified track. - *

- * This method must only be called after the extractor has been prepared. - * - * @param track The track index. - * @return The corresponding format. - */ - MediaFormat getFormat(int track); + void init(TrackOutputBuilder output); /** * Reads up to a single TS packet. diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java index b44626722f..40bc8f7280 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java @@ -29,15 +29,17 @@ import java.io.IOException; /** * Wraps a {@link HlsExtractor}, adding functionality to enable reading of the extracted samples. */ -public final class HlsExtractorWrapper implements HlsExtractor.ExtractorOutput { +public final class HlsExtractorWrapper implements HlsExtractor.TrackOutputBuilder { private final BufferPool bufferPool; private final HlsExtractor extractor; + private final SparseArray sampleQueues; private final boolean shouldSpliceIn; - private SparseArray sampleQueues; + private volatile boolean outputsBuilt; // Accessed only by the consuming thread. + private boolean prepared; private boolean spliceConfigured; public HlsExtractorWrapper(BufferPool bufferPool, HlsExtractor extractor, @@ -88,7 +90,7 @@ public final class HlsExtractorWrapper implements HlsExtractor.ExtractorOutput { * @return The number of available tracks. */ public int getTrackCount() { - return extractor.getTrackCount(); + return sampleQueues.size(); } /** @@ -100,7 +102,7 @@ public final class HlsExtractorWrapper implements HlsExtractor.ExtractorOutput { * @return The corresponding format. */ public MediaFormat getFormat(int track) { - return extractor.getFormat(track); + return sampleQueues.valueAt(track).getFormat(); } /** @@ -109,7 +111,15 @@ public final class HlsExtractorWrapper implements HlsExtractor.ExtractorOutput { * @return True if the extractor is prepared. False otherwise. */ public boolean isPrepared() { - return extractor.isPrepared(); + if (!prepared && outputsBuilt) { + for (int i = 0; i < sampleQueues.size(); i++) { + if (!sampleQueues.valueAt(i).hasFormat()) { + return false; + } + } + prepared = true; + } + return prepared; } /** @@ -186,13 +196,15 @@ public final class HlsExtractorWrapper implements HlsExtractor.ExtractorOutput { // ExtractorOutput implementation. @Override - public TrackOutput getTrackOutput(int id) { - SampleQueue sampleQueue = sampleQueues.get(id); - if (sampleQueue == null) { - sampleQueue = new SampleQueue(bufferPool); - sampleQueues.put(id, sampleQueue); - } + public TrackOutput buildOutput(int id) { + SampleQueue sampleQueue = new SampleQueue(bufferPool); + sampleQueues.put(id, sampleQueue); return sampleQueue; } + @Override + public void allOutputsBuilt() { + this.outputsBuilt = true; + } + } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java index a76bcdbaa4..d48aa6e56d 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java @@ -27,7 +27,7 @@ import com.google.android.exoplayer.util.ParsableByteArray; public Id3Reader(TrackOutput output) { super(output); - setFormat(MediaFormat.createId3Format()); + output.setFormat(MediaFormat.createId3Format()); } @Override diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java index 5e9bd7950f..4f78f494bb 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java @@ -16,6 +16,7 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.C; +import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; import com.google.android.exoplayer.upstream.BufferPool; @@ -44,6 +45,7 @@ public final class SampleQueue implements TrackOutput { // Accessed by both the loading and consuming threads. private volatile long largestParsedTimestampUs; + private volatile MediaFormat format; public SampleQueue(BufferPool bufferPool) { rollingBuffer = new RollingSampleBuffer(bufferPool); @@ -60,6 +62,10 @@ public final class SampleQueue implements TrackOutput { // Called by the consuming thread. + public MediaFormat getFormat() { + return format; + } + public long getLargestParsedTimestampUs() { return largestParsedTimestampUs; } @@ -162,6 +168,16 @@ public final class SampleQueue implements TrackOutput { // TrackOutput implementation. Called by the loading thread. + @Override + public boolean hasFormat() { + return format != null; + } + + @Override + public void setFormat(MediaFormat format) { + this.format = format; + } + @Override public int appendData(DataSource dataSource, int length) throws IOException { return rollingBuffer.appendData(dataSource, length); diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java index 2bf48be730..979bc44d5f 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java @@ -31,7 +31,7 @@ import com.google.android.exoplayer.util.ParsableByteArray; public SeiReader(TrackOutput output) { super(output); - setFormat(MediaFormat.createEia608Format()); + output.setFormat(MediaFormat.createEia608Format()); } @Override diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java index 15eae10354..4a4417270a 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java @@ -16,9 +16,7 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.C; -import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.upstream.DataSource; -import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.ParsableBitArray; import com.google.android.exoplayer.util.ParsableByteArray; @@ -52,14 +50,11 @@ public final class TsExtractor implements HlsExtractor { private final ParsableBitArray tsScratch; // Accessed only by the loading thread. - private ExtractorOutput output; + private TrackOutputBuilder output; private int tsPacketBytesRead; private long timestampOffsetUs; private long lastPts; - // Accessed by both the loading and consuming threads. - private volatile boolean prepared; - public TsExtractor(long firstSampleTimestamp) { this.firstSampleTimestamp = firstSampleTimestamp; tsScratch = new ParsableBitArray(new byte[3]); @@ -71,40 +66,10 @@ public final class TsExtractor implements HlsExtractor { } @Override - public void init(ExtractorOutput output) { + public void init(TrackOutputBuilder output) { this.output = output; } - @Override - public int getTrackCount() { - Assertions.checkState(prepared); - return streamReaders.size(); - } - - @Override - public MediaFormat getFormat(int track) { - Assertions.checkState(prepared); - return streamReaders.valueAt(track).getFormat(); - } - - @Override - public boolean isPrepared() { - return prepared; - } - - private boolean checkPrepared() { - int pesPayloadReaderCount = streamReaders.size(); - if (pesPayloadReaderCount == 0) { - return false; - } - for (int i = 0; i < pesPayloadReaderCount; i++) { - if (!streamReaders.valueAt(i).hasFormat()) { - return false; - } - } - return true; - } - @Override public int read(DataSource dataSource) throws IOException { int bytesRead = dataSource.read(tsPacketBuffer.data, tsPacketBytesRead, @@ -153,10 +118,6 @@ public final class TsExtractor implements HlsExtractor { } } - if (!prepared) { - prepared = checkPrepared(); - } - return bytesRead; } @@ -193,7 +154,7 @@ public final class TsExtractor implements HlsExtractor { private abstract static class TsPayloadReader { public abstract void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, - ExtractorOutput output); + TrackOutputBuilder output); } @@ -210,7 +171,7 @@ public final class TsExtractor implements HlsExtractor { @Override public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, - ExtractorOutput output) { + TrackOutputBuilder output) { // Skip pointer. if (payloadUnitStartIndicator) { int pointerField = data.readUnsignedByte(); @@ -250,7 +211,7 @@ public final class TsExtractor implements HlsExtractor { @Override public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, - ExtractorOutput output) { + TrackOutputBuilder output) { // Skip pointer. if (payloadUnitStartIndicator) { int pointerField = data.readUnsignedByte(); @@ -294,16 +255,16 @@ public final class TsExtractor implements HlsExtractor { ElementaryStreamReader pesPayloadReader = null; switch (streamType) { case TS_STREAM_TYPE_AAC: - pesPayloadReader = new AdtsReader(output.getTrackOutput(TS_STREAM_TYPE_AAC)); + pesPayloadReader = new AdtsReader(output.buildOutput(TS_STREAM_TYPE_AAC)); break; case TS_STREAM_TYPE_H264: - SeiReader seiReader = new SeiReader(output.getTrackOutput(TS_STREAM_TYPE_EIA608)); + SeiReader seiReader = new SeiReader(output.buildOutput(TS_STREAM_TYPE_EIA608)); streamReaders.put(TS_STREAM_TYPE_EIA608, seiReader); - pesPayloadReader = new H264Reader(output.getTrackOutput(TS_STREAM_TYPE_H264), + pesPayloadReader = new H264Reader(output.buildOutput(TS_STREAM_TYPE_H264), seiReader); break; case TS_STREAM_TYPE_ID3: - pesPayloadReader = new Id3Reader(output.getTrackOutput(TS_STREAM_TYPE_ID3)); + pesPayloadReader = new Id3Reader(output.buildOutput(TS_STREAM_TYPE_ID3)); break; } @@ -313,7 +274,7 @@ public final class TsExtractor implements HlsExtractor { } } - // Skip CRC_32. + output.allOutputsBuilt(); } } @@ -353,7 +314,7 @@ public final class TsExtractor implements HlsExtractor { @Override public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, - ExtractorOutput output) { + TrackOutputBuilder output) { if (payloadUnitStartIndicator) { switch (state) { case STATE_FINDING_HEADER: From a22ccf9254fdf087e0a9d6abc76e7e8d740019ae Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 13 Mar 2015 11:47:51 +0000 Subject: [PATCH 38/69] Another baby step to unified extractors. - Have extractors read from an ExtractorInput. Benefits of this are (a) The ability to do a "full" read or skip of a specified number of bytes, (b) The ability to do multiple reads in your extractor's read method. The ExtractorInput will throw an InterruptedException if the read has been canceled. - Provides the extractor with the ability to query the absolute position of the data being read in the stream. This is needed for things like parsing a segment index in fragmented mp4, where the position of the end of the box in the stream is required because the index offsets are all specified relative to that position. --- .../google/android/exoplayer/hls/TsChunk.java | 27 ++--- .../exoplayer/hls/parser/AdtsExtractor.java | 9 +- .../hls/parser/DataSourceExtractorInput.java | 106 ++++++++++++++++++ .../exoplayer/hls/parser/HlsExtractor.java | 74 +++++++++++- .../hls/parser/HlsExtractorWrapper.java | 14 +-- .../exoplayer/hls/parser/TsExtractor.java | 24 +--- .../exoplayer/upstream/DataSource.java | 8 +- 7 files changed, 206 insertions(+), 56 deletions(-) create mode 100644 library/src/main/java/com/google/android/exoplayer/hls/parser/DataSourceExtractorInput.java diff --git a/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java b/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java index 863808d4ef..3b9e4c8000 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java @@ -15,6 +15,8 @@ */ package com.google.android.exoplayer.hls; +import com.google.android.exoplayer.hls.parser.DataSourceExtractorInput; +import com.google.android.exoplayer.hls.parser.HlsExtractor.ExtractorInput; import com.google.android.exoplayer.hls.parser.HlsExtractorWrapper; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.upstream.DataSpec; @@ -26,8 +28,6 @@ import java.io.IOException; */ public final class TsChunk extends HlsChunk { - private static final byte[] SCRATCH_SPACE = new byte[4096]; - /** * The index of the variant in the master playlist. */ @@ -102,30 +102,23 @@ public final class TsChunk extends HlsChunk { @Override public void load() throws IOException, InterruptedException { + ExtractorInput input = new DataSourceExtractorInput(dataSource, 0); try { dataSource.open(dataSpec); - int bytesRead = 0; - int bytesSkipped = 0; // If we previously fed part of this chunk to the extractor, skip it this time. // TODO: Ideally we'd construct a dataSpec that only loads the remainder of the data here, // rather than loading the whole chunk again and then skipping data we previously loaded. To // do this is straightforward for non-encrypted content, but more complicated for content // encrypted with AES, for which we'll need to modify the way that decryption is performed. - while (bytesRead != -1 && !loadCanceled && bytesSkipped < loadPosition) { - int skipLength = Math.min(loadPosition - bytesSkipped, SCRATCH_SPACE.length); - bytesRead = dataSource.read(SCRATCH_SPACE, 0, skipLength); - if (bytesRead != -1) { - bytesSkipped += bytesRead; + input.skipFully(loadPosition); + try { + while (!input.isEnded() && !loadCanceled) { + extractor.read(input); } + } finally { + loadPosition = (int) input.getPosition(); + loadFinished = !loadCanceled; } - // Feed the remaining data into the extractor. - while (bytesRead != -1 && !loadCanceled) { - bytesRead = extractor.read(dataSource); - if (bytesRead != -1) { - loadPosition += bytesRead; - } - } - loadFinished = !loadCanceled; } finally { dataSource.close(); } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java index 5915ea6885..f286afac92 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer.hls.parser; -import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.util.ParsableByteArray; import java.io.IOException; @@ -48,12 +47,13 @@ public class AdtsExtractor implements HlsExtractor { } @Override - public int read(DataSource dataSource) throws IOException { - int bytesRead = dataSource.read(packetBuffer.data, 0, MAX_PACKET_SIZE); + public void read(ExtractorInput input) throws IOException, InterruptedException { + int bytesRead = input.read(packetBuffer.data, 0, MAX_PACKET_SIZE); if (bytesRead == -1) { - return -1; + return; } + // Feed whatever data we have to the reader, regardless of whether the read finished or not. packetBuffer.setPosition(0); packetBuffer.setLimit(bytesRead); @@ -61,7 +61,6 @@ public class AdtsExtractor implements HlsExtractor { // unnecessary to copy the data through packetBuffer. adtsReader.consume(packetBuffer, firstSampleTimestamp, firstPacket); firstPacket = false; - return bytesRead; } } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/DataSourceExtractorInput.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/DataSourceExtractorInput.java new file mode 100644 index 0000000000..f951bea7a3 --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/DataSourceExtractorInput.java @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.hls.parser; + +import com.google.android.exoplayer.hls.parser.HlsExtractor.ExtractorInput; +import com.google.android.exoplayer.upstream.DataSource; + +import java.io.IOException; + +/** + * An {@link ExtractorInput} that wraps a {@link DataSource}. + */ +public final class DataSourceExtractorInput implements ExtractorInput { + + private static final byte[] SCRATCH_SPACE = new byte[4096]; + + private final DataSource dataSource; + + private long position; + private boolean isEnded; + + /** + * @param dataSource The wrapped {@link DataSource}. + * @param position The initial position in the stream. + */ + public DataSourceExtractorInput(DataSource dataSource, long position) { + this.dataSource = dataSource; + this.position = position; + } + + @Override + public int read(byte[] target, int offset, int length) throws IOException, InterruptedException { + if (Thread.interrupted()) { + throw new InterruptedException(); + } + int bytesRead = dataSource.read(target, offset, length); + if (bytesRead == -1) { + isEnded = true; + return -1; + } + position += bytesRead; + return bytesRead; + } + + @Override + public boolean readFully(byte[] target, int offset, int length) + throws IOException, InterruptedException { + int remaining = length; + while (remaining > 0) { + if (Thread.interrupted()) { + throw new InterruptedException(); + } + int bytesRead = dataSource.read(target, offset, remaining); + if (bytesRead == -1) { + isEnded = true; + return false; + } + offset += bytesRead; + remaining -= bytesRead; + } + position += length; + return true; + } + + @Override + public boolean skipFully(int length) throws IOException, InterruptedException { + int remaining = length; + while (remaining > 0) { + if (Thread.interrupted()) { + throw new InterruptedException(); + } + int bytesRead = dataSource.read(SCRATCH_SPACE, 0, remaining); + if (bytesRead == -1) { + isEnded = true; + return true; + } + remaining -= bytesRead; + } + position += length; + return false; + } + + @Override + public long getPosition() { + return position; + } + + @Override + public boolean isEnded() { + return isEnded; + } + +} diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java index e3b3e5468f..c5c5790147 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java @@ -26,6 +26,72 @@ import java.io.IOException; */ public interface HlsExtractor { + /** + * An object from which source data can be read. + */ + public interface ExtractorInput { + + /** + * Reads up to {@code length} bytes from the input. + *

+ * This method blocks until at least one byte of data can be read, the end of the input is + * detected, or an exception is thrown. + * + * @param target A target array into which data should be written. + * @param offset The offset into the target array at which to write. + * @param length The maximum number of bytes to read from the input. + * @return The number of bytes read, or -1 if the input has ended. + * @throws IOException If an error occurs reading from the input. + * @throws InterruptedException If the thread has been interrupted. + */ + int read(byte[] target, int offset, int length) throws IOException, InterruptedException; + + /** + * Like {@link #read(byte[], int, int)}, but guaranteed to read request {@code length} in full + * unless the end of the input is detected, or an exception is thrown. + * + * TODO: Firm up behavior of this method if (a) zero bytes are read before EOS, (b) the read + * is partially satisfied before EOS. + * + * @param target A target array into which data should be written. + * @param offset The offset into the target array at which to write. + * @param length The number of bytes to read from the input. + * @return True if the read was successful. False if the end of the input was reached. + * @throws IOException If an error occurs reading from the input. + * @throws InterruptedException If the thread has been interrupted. + */ + boolean readFully(byte[] target, int offset, int length) + throws IOException, InterruptedException; + + /** + * Like {@link #readFully(byte[], int, int)}, except the data is skipped instead of read. + * + * TODO: Firm up behavior of this method if (a) zero bytes are skipped before EOS, (b) the skip + * is partially satisfied before EOS. + * + * @param length The number of bytes to skip from the input. + * @return True if the read was successful. False if the end of the input was reached. + * @throws IOException If an error occurs reading from the input. + * @throws InterruptedException If the thread is interrupted. + */ + boolean skipFully(int length) throws IOException, InterruptedException; + + /** + * The current position in the stream. + * + * @return The position in the stream. + */ + long getPosition(); + + /** + * Whether or not the input has ended. + * + * @return True if the input has ended. False otherwise. + */ + boolean isEnded(); + + } + /** * An object to which extracted data should be output. */ @@ -76,12 +142,12 @@ public interface HlsExtractor { void init(TrackOutputBuilder output); /** - * Reads up to a single TS packet. + * Reads from the provided {@link ExtractorInput}. * - * @param dataSource The {@link DataSource} from which to read. + * @param input The {@link ExtractorInput} from which to read. * @throws IOException If an error occurred reading from the source. - * @return The number of bytes read from the source. + * @throws InterruptedException If the thread was interrupted. */ - int read(DataSource dataSource) throws IOException; + void read(ExtractorInput input) throws IOException, InterruptedException; } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java index 40bc8f7280..25dcd14961 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java @@ -17,9 +17,9 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; +import com.google.android.exoplayer.hls.parser.HlsExtractor.ExtractorInput; import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; import com.google.android.exoplayer.upstream.BufferPool; -import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.util.Assertions; import android.util.SparseArray; @@ -125,7 +125,7 @@ public final class HlsExtractorWrapper implements HlsExtractor.TrackOutputBuilde /** * Releases the extractor, recycling any pending or incomplete samples to the sample pool. *

- * This method should not be called whilst {@link #read(DataSource)} is also being invoked. + * This method should not be called whilst {@link #read(ExtractorInput)} is also being invoked. */ public void release() { for (int i = 0; i < sampleQueues.size(); i++) { @@ -183,14 +183,14 @@ public final class HlsExtractorWrapper implements HlsExtractor.TrackOutputBuilde } /** - * Reads up to a single TS packet. + * Reads from the provided {@link ExtractorInput}. * - * @param dataSource The {@link DataSource} from which to read. + * @param input The {@link ExtractorInput} from which to read. * @throws IOException If an error occurred reading from the source. - * @return The number of bytes read from the source. + * @throws InterruptedException If the thread was interrupted. */ - public int read(DataSource dataSource) throws IOException { - return extractor.read(dataSource); + public void read(ExtractorInput input) throws IOException, InterruptedException { + extractor.read(input); } // ExtractorOutput implementation. diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java index 4a4417270a..a7955ccf99 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java @@ -16,7 +16,6 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.C; -import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.util.ParsableBitArray; import com.google.android.exoplayer.util.ParsableByteArray; @@ -51,7 +50,6 @@ public final class TsExtractor implements HlsExtractor { // Accessed only by the loading thread. private TrackOutputBuilder output; - private int tsPacketBytesRead; private long timestampOffsetUs; private long lastPts; @@ -71,27 +69,15 @@ public final class TsExtractor implements HlsExtractor { } @Override - public int read(DataSource dataSource) throws IOException { - int bytesRead = dataSource.read(tsPacketBuffer.data, tsPacketBytesRead, - TS_PACKET_SIZE - tsPacketBytesRead); - if (bytesRead == -1) { - return -1; + public void read(ExtractorInput input) throws IOException, InterruptedException { + if (!input.readFully(tsPacketBuffer.data, 0, TS_PACKET_SIZE)) { + return; } - tsPacketBytesRead += bytesRead; - if (tsPacketBytesRead < TS_PACKET_SIZE) { - // We haven't read the whole packet yet. - return bytesRead; - } - - // Reset before reading the packet. - tsPacketBytesRead = 0; tsPacketBuffer.setPosition(0); - tsPacketBuffer.setLimit(TS_PACKET_SIZE); - int syncByte = tsPacketBuffer.readUnsignedByte(); if (syncByte != TS_SYNC_BYTE) { - return bytesRead; + return; } tsPacketBuffer.readBytes(tsScratch, 3); @@ -117,8 +103,6 @@ public final class TsExtractor implements HlsExtractor { payloadReader.consume(tsPacketBuffer, payloadUnitStartIndicator, output); } } - - return bytesRead; } /** diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/DataSource.java index 624e42a111..21f3488f7f 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DataSource.java @@ -55,13 +55,15 @@ public interface DataSource { /** * Reads up to {@code length} bytes of data and stores them into {@code buffer}, starting at - * index {@code offset}. This method blocks until at least one byte of data can be read, the end - * of the opened range is detected, or an exception is thrown. + * index {@code offset}. + *

+ * This method blocks until at least one byte of data can be read, the end of the opened range is + * detected, or an exception is thrown. * * @param buffer The buffer into which the read data should be stored. * @param offset The start offset into {@code buffer} at which data should be written. * @param readLength The maximum number of bytes to read. - * @return The actual number of bytes read, or -1 if the end of the opened range is reached. + * @return The number of bytes read, or -1 if the end of the opened range is reached. * @throws IOException If an error occurs reading from the source. */ public int read(byte[] buffer, int offset, int readLength) throws IOException; From 6d8c4dd41649c5bd5b9eed3b18a560721d68322b Mon Sep 17 00:00:00 2001 From: Andrew Lewis Date: Fri, 13 Mar 2015 18:06:00 +0000 Subject: [PATCH 39/69] Add workaround for slow okhttp InputStream.close() on API levels 19/20. --- .../upstream/DefaultHttpDataSource.java | 2 + .../google/android/exoplayer/util/Util.java | 50 +++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java index 8e0a4b75ec..259ffb6214 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java @@ -18,6 +18,7 @@ package com.google.android.exoplayer.upstream; import com.google.android.exoplayer.C; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.Predicate; +import com.google.android.exoplayer.util.Util; import android.text.TextUtils; import android.util.Log; @@ -226,6 +227,7 @@ public class DefaultHttpDataSource implements HttpDataSource { public void close() throws HttpDataSourceException { try { if (inputStream != null) { + Util.maybeTerminateInputStream(connection, bytesRemaining()); try { inputStream.close(); } catch (IOException e) { diff --git a/library/src/main/java/com/google/android/exoplayer/util/Util.java b/library/src/main/java/com/google/android/exoplayer/util/Util.java index 5081532f7a..8319a7ad88 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/Util.java +++ b/library/src/main/java/com/google/android/exoplayer/util/Util.java @@ -15,12 +15,16 @@ */ package com.google.android.exoplayer.util; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.upstream.DataSource; import android.text.TextUtils; import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Method; import java.math.BigDecimal; +import java.net.HttpURLConnection; import java.net.URL; import java.text.ParseException; import java.util.Arrays; @@ -57,6 +61,8 @@ public final class Util { Pattern.compile("^(-)?P(([0-9]*)Y)?(([0-9]*)M)?(([0-9]*)D)?" + "(T(([0-9]*)H)?(([0-9]*)M)?(([0-9.]*)S)?)?$"); + private static final long MAX_BYTES_TO_DRAIN = 2048; + private Util() {} /** @@ -396,4 +402,48 @@ public final class Util { return intArray; } + /** + * On platform API levels 19 and 20, okhttp's implementation of {@link InputStream#close} can + * block for a long time if the stream has a lot of data remaining. Call this method before + * closing the input stream to make a best effort to cause the input stream to encounter an + * unexpected end of input, working around this issue. On other platform API levels, the method + * does nothing. + * + * @param connection The connection whose {@link InputStream} should be terminated. + * @param bytesRemaining The number of bytes remaining to be read from the input stream if its + * length is known. {@link C#LENGTH_UNBOUNDED} otherwise. + */ + public static void maybeTerminateInputStream(HttpURLConnection connection, long bytesRemaining) { + if (SDK_INT != 19 && SDK_INT != 20) { + return; + } + + try { + InputStream inputStream = connection.getInputStream(); + if (bytesRemaining == C.LENGTH_UNBOUNDED) { + // If the input stream has already ended, do nothing. The socket may be re-used. + if (inputStream.read() == -1) { + return; + } + } else if (bytesRemaining <= MAX_BYTES_TO_DRAIN) { + // There isn't much data left. Prefer to allow it to drain, which may allow the socket to be + // re-used. + return; + } + String className = inputStream.getClass().getName(); + if (className.equals("com.android.okhttp.internal.http.HttpTransport$ChunkedInputStream") + || className.equals( + "com.android.okhttp.internal.http.HttpTransport$FixedLengthInputStream")) { + Class superclass = inputStream.getClass().getSuperclass(); + Method unexpectedEndOfInput = superclass.getDeclaredMethod("unexpectedEndOfInput"); + unexpectedEndOfInput.setAccessible(true); + unexpectedEndOfInput.invoke(inputStream); + } + } catch (IOException e) { + // The connection didn't ever have an input stream, or it was closed already. + } catch (Exception e) { + // Something went wrong. The device probably isn't using okhttp. + } + } + } From 5e4a35fa7ea719cc9ce17d03ca6d4abc67125f39 Mon Sep 17 00:00:00 2001 From: Andrew Lewis Date: Fri, 13 Mar 2015 18:10:37 +0000 Subject: [PATCH 40/69] Add Mp4SampleExtractor, for reading unfragmented MP4 files. --- .../android/exoplayer/demo/DemoUtil.java | 1 + .../exoplayer/demo/PlayerActivity.java | 3 + .../android/exoplayer/demo/Samples.java | 6 + .../demo/player/Mp4RendererBuilder.java | 69 ++ .../exoplayer/source/Mp4SampleExtractor.java | 740 ++++++++++++++++++ .../BufferedNonBlockingInputStream.java | 150 ++++ .../exoplayer/upstream/DataSourceStream.java | 108 ++- .../source/Mp4SampleExtractorTest.java | 622 +++++++++++++++ .../BufferedNonBlockingInputStreamTest.java | 149 ++++ 9 files changed, 1837 insertions(+), 11 deletions(-) create mode 100644 demo/src/main/java/com/google/android/exoplayer/demo/player/Mp4RendererBuilder.java create mode 100644 library/src/main/java/com/google/android/exoplayer/source/Mp4SampleExtractor.java create mode 100644 library/src/main/java/com/google/android/exoplayer/upstream/BufferedNonBlockingInputStream.java create mode 100644 library/src/test/java/com/google/android/exoplayer/source/Mp4SampleExtractorTest.java create mode 100644 library/src/test/java/com/google/android/exoplayer/upstream/BufferedNonBlockingInputStreamTest.java diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/DemoUtil.java b/demo/src/main/java/com/google/android/exoplayer/demo/DemoUtil.java index dae5773100..b021e37683 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/DemoUtil.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/DemoUtil.java @@ -48,6 +48,7 @@ public class DemoUtil { public static final int TYPE_SS = 1; public static final int TYPE_OTHER = 2; public static final int TYPE_HLS = 3; + public static final int TYPE_MP4 = 4; private static final CookieManager defaultCookieManager; diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java b/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java index 80274ecc7b..fcf61fb276 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java @@ -24,6 +24,7 @@ import com.google.android.exoplayer.demo.player.DefaultRendererBuilder; import com.google.android.exoplayer.demo.player.DemoPlayer; import com.google.android.exoplayer.demo.player.DemoPlayer.RendererBuilder; import com.google.android.exoplayer.demo.player.HlsRendererBuilder; +import com.google.android.exoplayer.demo.player.Mp4RendererBuilder; import com.google.android.exoplayer.demo.player.SmoothStreamingRendererBuilder; import com.google.android.exoplayer.demo.player.UnsupportedDrmException; import com.google.android.exoplayer.metadata.GeobMetadata; @@ -215,6 +216,8 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback, new WidevineTestMediaDrmCallback(contentId), debugTextView, audioCapabilities); case DemoUtil.TYPE_HLS: return new HlsRendererBuilder(userAgent, contentUri.toString()); + case DemoUtil.TYPE_MP4: + return new Mp4RendererBuilder(contentUri, debugTextView); default: return new DefaultRendererBuilder(this, contentUri, debugTextView); } diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java index 682d474972..0aa6065c2f 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java @@ -135,6 +135,12 @@ import java.util.Locale; new Sample("Apple AAC 10s", "https://devimages.apple.com.edgekey.net/" + "streaming/examples/bipbop_4x3/gear0/fileSequence0.aac", DemoUtil.TYPE_OTHER), + new Sample("Big Buck Bunny (MP4)", + "http://redirector.c.youtube.com/videoplayback?id=604ed5ce52eda7ee&itag=22&source=youtube" + + "&sparams=ip,ipbits,expire&ip=0.0.0.0&ipbits=0&expire=19000000000&signature=" + + "2E853B992F6CAB9D28CA3BEBD84A6F26709A8A55.94344B0D8BA83A7417AAD24DACC8C71A9A878ECE" + + "&key=ik0", + DemoUtil.TYPE_MP4), }; private Samples() {} diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/player/Mp4RendererBuilder.java b/demo/src/main/java/com/google/android/exoplayer/demo/player/Mp4RendererBuilder.java new file mode 100644 index 0000000000..68fe2b8366 --- /dev/null +++ b/demo/src/main/java/com/google/android/exoplayer/demo/player/Mp4RendererBuilder.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.demo.player; + +import com.google.android.exoplayer.MediaCodecAudioTrackRenderer; +import com.google.android.exoplayer.MediaCodecVideoTrackRenderer; +import com.google.android.exoplayer.TrackRenderer; +import com.google.android.exoplayer.demo.player.DemoPlayer.RendererBuilder; +import com.google.android.exoplayer.demo.player.DemoPlayer.RendererBuilderCallback; +import com.google.android.exoplayer.source.DefaultSampleSource; +import com.google.android.exoplayer.source.Mp4SampleExtractor; +import com.google.android.exoplayer.upstream.DataSpec; +import com.google.android.exoplayer.upstream.UriDataSource; + +import android.media.MediaCodec; +import android.net.Uri; +import android.widget.TextView; + +/** + * A {@link RendererBuilder} for streams that can be read using {@link Mp4SampleExtractor}. + */ +public class Mp4RendererBuilder implements RendererBuilder { + + private final Uri uri; + private final TextView debugTextView; + + public Mp4RendererBuilder(Uri uri, TextView debugTextView) { + this.uri = uri; + this.debugTextView = debugTextView; + } + + @Override + public void buildRenderers(DemoPlayer player, RendererBuilderCallback callback) { + // Build the video and audio renderers. + DefaultSampleSource sampleSource = new DefaultSampleSource( + new Mp4SampleExtractor(new UriDataSource("exoplayer", null), new DataSpec(uri)), 2); + MediaCodecVideoTrackRenderer videoRenderer = new MediaCodecVideoTrackRenderer(sampleSource, + null, true, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, 5000, null, player.getMainHandler(), + player, 50); + MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource, + null, true, player.getMainHandler(), player); + + // Build the debug renderer. + TrackRenderer debugRenderer = debugTextView != null + ? new DebugTrackRenderer(debugTextView, videoRenderer) + : null; + + // Invoke the callback. + TrackRenderer[] renderers = new TrackRenderer[DemoPlayer.RENDERER_COUNT]; + renderers[DemoPlayer.TYPE_VIDEO] = videoRenderer; + renderers[DemoPlayer.TYPE_AUDIO] = audioRenderer; + renderers[DemoPlayer.TYPE_DEBUG] = debugRenderer; + callback.onRenderers(null, null, renderers); + } + +} diff --git a/library/src/main/java/com/google/android/exoplayer/source/Mp4SampleExtractor.java b/library/src/main/java/com/google/android/exoplayer/source/Mp4SampleExtractor.java new file mode 100644 index 0000000000..4a51492951 --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/source/Mp4SampleExtractor.java @@ -0,0 +1,740 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.source; + +import com.google.android.exoplayer.C; +import com.google.android.exoplayer.MediaFormat; +import com.google.android.exoplayer.SampleHolder; +import com.google.android.exoplayer.SampleSource; +import com.google.android.exoplayer.TrackRenderer; +import com.google.android.exoplayer.drm.DrmInitData; +import com.google.android.exoplayer.mp4.Atom; +import com.google.android.exoplayer.mp4.Atom.ContainerAtom; +import com.google.android.exoplayer.mp4.CommonMp4AtomParsers; +import com.google.android.exoplayer.mp4.Mp4TrackSampleTable; +import com.google.android.exoplayer.mp4.Mp4Util; +import com.google.android.exoplayer.mp4.Track; +import com.google.android.exoplayer.upstream.BufferPool; +import com.google.android.exoplayer.upstream.BufferedNonBlockingInputStream; +import com.google.android.exoplayer.upstream.DataSource; +import com.google.android.exoplayer.upstream.DataSourceStream; +import com.google.android.exoplayer.upstream.DataSpec; +import com.google.android.exoplayer.upstream.Loader; +import com.google.android.exoplayer.upstream.Loader.Loadable; +import com.google.android.exoplayer.util.Assertions; +import com.google.android.exoplayer.util.MimeTypes; +import com.google.android.exoplayer.util.ParsableByteArray; +import com.google.android.exoplayer.util.Util; + +import android.util.Log; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.Stack; + +/** + * Extracts data from a {@link DataSpec} in unfragmented MP4 format (ISO 14496-12). + */ +public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callback { + + private static final String TAG = "Mp4SampleExtractor"; + private static final String LOADER_THREAD_NAME = "Mp4SampleExtractor"; + + // Reading results + private static final int RESULT_NEED_MORE_DATA = 1; + private static final int RESULT_END_OF_STREAM = 2; + + // Parser states + private static final int STATE_READING_ATOM_HEADER = 0; + private static final int STATE_READING_ATOM_PAYLOAD = 1; + + /** Set of atom types that contain data to be parsed. */ + private static final Set LEAF_ATOM_TYPES = getAtomTypeSet( + Atom.TYPE_mdhd, Atom.TYPE_mvhd, Atom.TYPE_hdlr, Atom.TYPE_vmhd, Atom.TYPE_smhd, + Atom.TYPE_stsd, Atom.TYPE_avc1, Atom.TYPE_avcC, Atom.TYPE_mp4a, Atom.TYPE_esds, + Atom.TYPE_stts, Atom.TYPE_stss, Atom.TYPE_ctts, Atom.TYPE_stsc, Atom.TYPE_stsz, + Atom.TYPE_stco, Atom.TYPE_co64, Atom.TYPE_tkhd); + + /** Set of atom types that contain other atoms that need to be parsed. */ + private static final Set CONTAINER_TYPES = getAtomTypeSet( + Atom.TYPE_moov, Atom.TYPE_trak, Atom.TYPE_mdia, Atom.TYPE_minf, Atom.TYPE_stbl); + + /** Default number of times to retry loading data prior to failing. */ + private static final int DEFAULT_LOADABLE_RETRY_COUNT = 3; + + private final DataSource dataSource; + private final DataSpec dataSpec; + + private final int readAheadAllocationSize; + private final int reloadMinimumSeekDistance; + private final int maximumTrackSampleInterval; + private final int loadRetryCount; + + private final BufferPool bufferPool; + private final Loader loader; + private final ParsableByteArray atomHeader; + private final Stack containerAtoms; + + private DataSourceStream dataSourceStream; + private BufferedNonBlockingInputStream inputStream; + private long inputStreamOffset; + private long rootAtomBytesRead; + private boolean loadCompleted; + + private int parserState; + private int atomBytesRead; + private int atomType; + private long atomSize; + private ParsableByteArray atomData; + + private boolean prepared; + + private int loadErrorCount; + + private Mp4Track[] tracks; + + /** An exception from {@link #inputStream}'s callbacks, or {@code null} if there was no error. */ + private IOException lastLoadError; + private long loadErrorPosition; + + /** If handling a call to {@link #seekTo}, the new required stream offset, or -1 otherwise. */ + private long pendingSeekPosition; + /** If the input stream is being reopened at a new position, the new offset, or -1 otherwise. */ + private long pendingLoadPosition; + + /** + * Creates a new sample extractor for reading {@code dataSource} and {@code dataSpec} as an + * unfragmented MP4 file with default settings. + * + *

The default settings read ahead by 5 MiB, handle maximum offsets between samples at the same + * timestamp in different tracks of 3 MiB and restart loading when seeking forward by >= 256 KiB. + * + * @param dataSource Data source used to read from {@code dataSpec}. + * @param dataSpec Data specification specifying what to read. + */ + public Mp4SampleExtractor(DataSource dataSource, DataSpec dataSpec) { + this(dataSource, dataSpec, 5 * 1024 * 1024, 3 * 1024 * 1024, 256 * 1024, + DEFAULT_LOADABLE_RETRY_COUNT); + } + + /** + * Creates a new sample extractor for reading {@code dataSource} and {@code dataSpec} as an + * unfragmented MP4 file. + * + * @param dataSource Data source used to read from {@code dataSpec}. + * @param dataSpec Data specification specifying what to read. + * @param readAheadAllocationSize Size of the allocation that buffers the stream, in bytes. The + * value must exceed the maximum sample size, so that a sample can be read in its entirety. + * @param maximumTrackSampleInterval Size of the buffer that handles reading from any selected + * track. The value should be chosen so that the buffer is as big as the interval in bytes + * between the start of the earliest and the end of the latest sample required to render media + * from all selected tracks, at any timestamp in the data source. + * @param reloadMinimumSeekDistance Determines when {@code dataSource} is reopened while seeking: + * if the number of bytes between the current position and the new position is greater than or + * equal to this value, or the new position is before the current position, loading will + * restart. The value should be set to the number of bytes that can be loaded/consumed from an + * existing connection in the time it takes to start a new connection. + * @param loadableRetryCount The number of times to retry loading if an error occurs. + */ + public Mp4SampleExtractor(DataSource dataSource, DataSpec dataSpec, int readAheadAllocationSize, + int maximumTrackSampleInterval, int reloadMinimumSeekDistance, int loadableRetryCount) { + // TODO: Handle minimumTrackSampleInterval specified in time not bytes. + this.dataSource = Assertions.checkNotNull(dataSource); + this.dataSpec = Assertions.checkNotNull(dataSpec); + this.readAheadAllocationSize = readAheadAllocationSize; + this.maximumTrackSampleInterval = maximumTrackSampleInterval; + this.reloadMinimumSeekDistance = reloadMinimumSeekDistance; + this.loadRetryCount = loadableRetryCount; + + // TODO: Implement Allocator here so it is possible to check there is only one buffer at a time. + bufferPool = new BufferPool(readAheadAllocationSize); + loader = new Loader(LOADER_THREAD_NAME); + atomHeader = new ParsableByteArray(Mp4Util.LONG_ATOM_HEADER_SIZE); + containerAtoms = new Stack(); + + parserState = STATE_READING_ATOM_HEADER; + pendingLoadPosition = -1; + pendingSeekPosition = -1; + loadErrorPosition = -1; + } + + @Override + public boolean prepare() throws IOException { + if (inputStream == null) { + loadFromOffset(0L); + } + + if (!prepared) { + if (readHeaders() && !prepared) { + throw new IOException("moov atom not found."); + } + + if (!prepared) { + maybeThrowLoadError(); + } + } + + return prepared; + } + + @Override + public void selectTrack(int trackIndex) { + Assertions.checkState(prepared); + + if (tracks[trackIndex].selected) { + return; + } + tracks[trackIndex].selected = true; + + // Get the timestamp of the earliest currently-selected sample. + int earliestSampleTrackIndex = getTrackIndexOfEarliestCurrentSample(); + if (earliestSampleTrackIndex == Mp4Util.NO_TRACK) { + tracks[trackIndex].sampleIndex = 0; + return; + } + if (earliestSampleTrackIndex == Mp4Util.NO_SAMPLE) { + tracks[trackIndex].sampleIndex = Mp4Util.NO_SAMPLE; + return; + } + long timestampUs = + tracks[earliestSampleTrackIndex].sampleTable.timestampsUs[earliestSampleTrackIndex]; + + // Find the latest sync sample in the new track that has an earlier or equal timestamp. + tracks[trackIndex].sampleIndex = + tracks[trackIndex].sampleTable.getIndexOfEarlierOrEqualSynchronizationSample(timestampUs); + } + + @Override + public void deselectTrack(int trackIndex) { + Assertions.checkState(prepared); + + tracks[trackIndex].selected = false; + } + + @Override + public long getBufferedPositionUs() { + Assertions.checkState(prepared); + + if (pendingLoadPosition != -1) { + return TrackRenderer.UNKNOWN_TIME_US; + } + + if (loadCompleted) { + return TrackRenderer.END_OF_TRACK_US; + } + + // Get the absolute position to which there is data buffered. + long bufferedPosition = + inputStreamOffset + inputStream.getReadPosition() + inputStream.getAvailableByteCount(); + + // Find the timestamp of the latest sample that does not exceed the buffered position. + long latestTimestampBeforeEnd = Long.MIN_VALUE; + for (int trackIndex = 0; trackIndex < tracks.length; trackIndex++) { + if (!tracks[trackIndex].selected) { + continue; + } + + Mp4TrackSampleTable sampleTable = tracks[trackIndex].sampleTable; + int sampleIndex = Util.binarySearchFloor(sampleTable.offsets, bufferedPosition, false, true); + if (sampleIndex > 0 + && sampleTable.offsets[sampleIndex] + sampleTable.sizes[sampleIndex] > bufferedPosition) { + sampleIndex--; + } + + // Update the latest timestamp if this is greater. + long timestamp = sampleTable.timestampsUs[sampleIndex]; + if (timestamp > latestTimestampBeforeEnd) { + latestTimestampBeforeEnd = timestamp; + } + } + + return latestTimestampBeforeEnd < 0L ? C.UNKNOWN_TIME_US : latestTimestampBeforeEnd; + } + + @Override + public void seekTo(long positionUs) { + Assertions.checkState(prepared); + + long earliestSamplePosition = Long.MAX_VALUE; + for (int trackIndex = 0; trackIndex < tracks.length; trackIndex++) { + if (!tracks[trackIndex].selected) { + continue; + } + + Mp4TrackSampleTable sampleTable = tracks[trackIndex].sampleTable; + int sampleIndex = sampleTable.getIndexOfEarlierOrEqualSynchronizationSample(positionUs); + if (sampleIndex == Mp4Util.NO_SAMPLE) { + sampleIndex = sampleTable.getIndexOfLaterOrEqualSynchronizationSample(positionUs); + } + tracks[trackIndex].sampleIndex = sampleIndex; + + long offset = sampleTable.offsets[tracks[trackIndex].sampleIndex]; + if (offset < earliestSamplePosition) { + earliestSamplePosition = offset; + } + } + + pendingSeekPosition = earliestSamplePosition; + if (pendingLoadPosition != -1) { + loadFromOffset(earliestSamplePosition); + return; + } + + inputStream.returnToMark(); + long earliestOffset = inputStreamOffset + inputStream.getReadPosition(); + long latestOffset = earliestOffset + inputStream.getAvailableByteCount(); + if (earliestSamplePosition < earliestOffset + || earliestSamplePosition >= latestOffset + reloadMinimumSeekDistance) { + loadFromOffset(earliestSamplePosition); + } + } + + @Override + public int getTrackCount() { + Assertions.checkState(prepared); + return tracks.length; + } + + @Override + public MediaFormat getMediaFormat(int track) { + Assertions.checkState(prepared); + return tracks[track].track.mediaFormat; + } + + @Override + public DrmInitData getDrmInitData(int track) { + return null; + } + + @Override + public int readSample(int trackIndex, SampleHolder sampleHolder) throws IOException { + Assertions.checkState(prepared); + + Mp4Track track = tracks[trackIndex]; + Assertions.checkState(track.selected); + int sampleIndex = track.sampleIndex; + + // Check for the end of the stream. + if (sampleIndex == Mp4Util.NO_SAMPLE) { + // TODO: Should END_OF_STREAM be returned as soon as this track has no more samples, or as + // soon as no tracks have a sample (as implemented here)? + return hasSampleInAnySelectedTrack() ? SampleSource.NOTHING_READ : SampleSource.END_OF_STREAM; + } + + // Return if the input stream will be reopened at the requested position. + if (pendingLoadPosition != -1) { + return SampleSource.NOTHING_READ; + } + + // If there was a seek request, try to skip forwards to the requested position. + if (pendingSeekPosition != -1) { + int bytesToSeekPosition = + (int) (pendingSeekPosition - (inputStreamOffset + inputStream.getReadPosition())); + int skippedByteCount = inputStream.skip(bytesToSeekPosition); + if (skippedByteCount == -1) { + throw new IOException("Unexpected end-of-stream while seeking to sample."); + } + bytesToSeekPosition -= skippedByteCount; + inputStream.mark(); + if (bytesToSeekPosition == 0) { + pendingSeekPosition = -1; + } else { + maybeThrowLoadError(); + return SampleSource.NOTHING_READ; + } + } + + // Return if the sample offset hasn't been loaded yet. + inputStream.returnToMark(); + long sampleOffset = track.sampleTable.offsets[sampleIndex]; + long seekOffsetLong = (sampleOffset - inputStreamOffset) - inputStream.getReadPosition(); + Assertions.checkState(seekOffsetLong <= Integer.MAX_VALUE); + int seekOffset = (int) seekOffsetLong; + if (inputStream.skip(seekOffset) != seekOffset) { + maybeThrowLoadError(); + return SampleSource.NOTHING_READ; + } + + // Return if the sample has been loaded. + int sampleSize = track.sampleTable.sizes[sampleIndex]; + if (inputStream.getAvailableByteCount() < sampleSize) { + maybeThrowLoadError(); + return SampleSource.NOTHING_READ; + } + + if (sampleHolder.data == null || sampleHolder.data.capacity() < sampleSize) { + sampleHolder.replaceBuffer(sampleSize); + } + + ByteBuffer data = sampleHolder.data; + if (data == null) { + inputStream.skip(sampleSize); + sampleHolder.size = 0; + } else { + int bytesRead = inputStream.read(data, sampleSize); + Assertions.checkState(bytesRead == sampleSize); + + if (MimeTypes.VIDEO_H264.equals(tracks[trackIndex].track.mediaFormat.mimeType)) { + // The mp4 file contains length-prefixed access units, but the decoder wants start code + // delimited content. + Mp4Util.replaceLengthPrefixesWithAvcStartCodes(sampleHolder.data, sampleSize); + } + sampleHolder.size = sampleSize; + } + + // Move the input stream mark forwards if the earliest current sample was just read. + if (getTrackIndexOfEarliestCurrentSample() == trackIndex) { + inputStream.mark(); + } + + // TODO: Read encryption data. + sampleHolder.timeUs = track.sampleTable.timestampsUs[sampleIndex]; + sampleHolder.flags = track.sampleTable.flags[sampleIndex]; + + // Advance to the next sample, checking if this was the last sample. + track.sampleIndex = + sampleIndex + 1 == track.sampleTable.getSampleCount() ? Mp4Util.NO_SAMPLE : sampleIndex + 1; + + // Reset the loading error counter if we read past the offset at which the error was thrown. + if (dataSourceStream.getReadPosition() > loadErrorPosition) { + loadErrorCount = 0; + loadErrorPosition = -1; + } + + return SampleSource.SAMPLE_READ; + } + + @Override + public void release() { + pendingLoadPosition = -1; + loader.release(); + + if (inputStream != null) { + inputStream.close(); + } + } + + @Override + public void onLoadError(Loadable loadable, IOException exception) { + lastLoadError = exception; + + loadErrorCount++; + if (loadErrorPosition == -1) { + loadErrorPosition = dataSourceStream.getLoadPosition(); + } + int delayMs = getRetryDelayMs(loadErrorCount); + Log.w(TAG, "Retry loading (delay " + delayMs + " ms)."); + loader.startLoading(dataSourceStream, this, delayMs); + } + + @Override + public void onLoadCompleted(Loadable loadable) { + loadCompleted = true; + } + + @Override + public void onLoadCanceled(Loadable loadable) { + if (pendingLoadPosition != -1) { + loadFromOffset(pendingLoadPosition); + pendingLoadPosition = -1; + } + } + + private void loadFromOffset(long offsetBytes) { + inputStreamOffset = offsetBytes; + rootAtomBytesRead = offsetBytes; + + if (loader.isLoading()) { + // Wait for loading to be canceled before proceeding. + pendingLoadPosition = offsetBytes; + loader.cancelLoading(); + return; + } + + if (inputStream != null) { + inputStream.close(); + } + + DataSpec dataSpec = new DataSpec( + this.dataSpec.uri, offsetBytes, C.LENGTH_UNBOUNDED, this.dataSpec.key); + dataSourceStream = + new DataSourceStream(dataSource, dataSpec, bufferPool, readAheadAllocationSize); + loader.startLoading(dataSourceStream, this); + + // Wrap the input stream with a buffering stream so that it is possible to read from any track. + inputStream = + new BufferedNonBlockingInputStream(dataSourceStream, maximumTrackSampleInterval); + loadCompleted = false; + + loadErrorCount = 0; + loadErrorPosition = -1; + } + + /** + * Returns the index of the track that contains the earliest current sample, or + * {@link Mp4Util#NO_TRACK} if no track is selected, or {@link Mp4Util#NO_SAMPLE} if no samples + * remain in selected tracks. + */ + private int getTrackIndexOfEarliestCurrentSample() { + int earliestSampleTrackIndex = Mp4Util.NO_TRACK; + long earliestSampleOffset = Long.MAX_VALUE; + for (int trackIndex = 0; trackIndex < tracks.length; trackIndex++) { + Mp4Track track = tracks[trackIndex]; + if (!track.selected) { + continue; + } + + int sampleIndex = track.sampleIndex; + if (sampleIndex == Mp4Util.NO_SAMPLE) { + if (earliestSampleTrackIndex == Mp4Util.NO_TRACK) { + // A track is selected, but it has no more samples. + earliestSampleTrackIndex = Mp4Util.NO_SAMPLE; + } + continue; + } + + long trackSampleOffset = track.sampleTable.offsets[sampleIndex]; + if (trackSampleOffset < earliestSampleOffset) { + earliestSampleOffset = trackSampleOffset; + earliestSampleTrackIndex = trackIndex; + } + } + + return earliestSampleTrackIndex; + } + + private boolean hasSampleInAnySelectedTrack() { + boolean hasSample = false; + for (int trackIndex = 0; trackIndex < tracks.length; trackIndex++) { + if (tracks[trackIndex].selected && tracks[trackIndex].sampleIndex != Mp4Util.NO_SAMPLE) { + hasSample = true; + break; + } + } + return hasSample; + } + + /** Reads headers, returning whether the end of the stream was reached. */ + private boolean readHeaders() { + int results = 0; + while (!prepared && (results & (RESULT_NEED_MORE_DATA | RESULT_END_OF_STREAM)) == 0) { + switch (parserState) { + case STATE_READING_ATOM_HEADER: + results |= readAtomHeader(); + break; + case STATE_READING_ATOM_PAYLOAD: + results |= readAtomPayload(); + break; + } + } + + return (results & RESULT_END_OF_STREAM) != 0; + } + + private int readAtomHeader() { + if (pendingLoadPosition != -1) { + return RESULT_NEED_MORE_DATA; + } + + // The size value is either 4 or 8 bytes long (in which case atomSize = Mp4Util.LONG_ATOM_SIZE). + int remainingBytes; + if (atomSize != Mp4Util.LONG_ATOM_SIZE) { + remainingBytes = Mp4Util.ATOM_HEADER_SIZE - atomBytesRead; + } else { + remainingBytes = Mp4Util.LONG_ATOM_HEADER_SIZE - atomBytesRead; + } + + int bytesRead = inputStream.read(atomHeader.data, atomBytesRead, remainingBytes); + if (bytesRead == -1) { + return RESULT_END_OF_STREAM; + } + rootAtomBytesRead += bytesRead; + atomBytesRead += bytesRead; + if (atomBytesRead < Mp4Util.ATOM_HEADER_SIZE + || (atomSize == Mp4Util.LONG_ATOM_SIZE && atomBytesRead < Mp4Util.LONG_ATOM_HEADER_SIZE)) { + return RESULT_NEED_MORE_DATA; + } + + atomHeader.setPosition(0); + atomSize = atomHeader.readUnsignedInt(); + atomType = atomHeader.readInt(); + if (atomSize == Mp4Util.LONG_ATOM_SIZE) { + // The extended atom size is contained in the next 8 bytes, so try to read it now. + if (atomBytesRead < Mp4Util.LONG_ATOM_HEADER_SIZE) { + return readAtomHeader(); + } + + atomSize = atomHeader.readLong(); + } + + Integer atomTypeInteger = atomType; // Avoids boxing atomType twice. + if (CONTAINER_TYPES.contains(atomTypeInteger)) { + if (atomSize == Mp4Util.LONG_ATOM_SIZE) { + containerAtoms.add(new ContainerAtom( + atomType, rootAtomBytesRead + atomSize - Mp4Util.LONG_ATOM_HEADER_SIZE)); + } else { + containerAtoms.add(new ContainerAtom( + atomType, rootAtomBytesRead + atomSize - Mp4Util.ATOM_HEADER_SIZE)); + } + enterState(STATE_READING_ATOM_HEADER); + } else if (LEAF_ATOM_TYPES.contains(atomTypeInteger)) { + Assertions.checkState(atomSize <= Integer.MAX_VALUE); + atomData = new ParsableByteArray((int) atomSize); + System.arraycopy(atomHeader.data, 0, atomData.data, 0, Mp4Util.ATOM_HEADER_SIZE); + enterState(STATE_READING_ATOM_PAYLOAD); + } else { + atomData = null; + enterState(STATE_READING_ATOM_PAYLOAD); + } + + return 0; + } + + private int readAtomPayload() { + int bytesRead; + if (atomData != null) { + bytesRead = inputStream.read(atomData.data, atomBytesRead, (int) atomSize - atomBytesRead); + } else { + if (atomSize >= reloadMinimumSeekDistance || atomSize > Integer.MAX_VALUE) { + loadFromOffset(rootAtomBytesRead + atomSize - atomBytesRead); + onContainerAtomRead(); + enterState(STATE_READING_ATOM_HEADER); + return 0; + } else { + bytesRead = inputStream.skip((int) atomSize - atomBytesRead); + } + } + if (bytesRead == -1) { + return RESULT_END_OF_STREAM; + } + rootAtomBytesRead += bytesRead; + atomBytesRead += bytesRead; + if (atomBytesRead != atomSize) { + return RESULT_NEED_MORE_DATA; + } + + if (atomData != null && !containerAtoms.isEmpty()) { + containerAtoms.peek().add(new Atom.LeafAtom(atomType, atomData)); + } + + onContainerAtomRead(); + + enterState(STATE_READING_ATOM_HEADER); + return 0; + } + + private void onContainerAtomRead() { + while (!containerAtoms.isEmpty() && containerAtoms.peek().endByteOffset == rootAtomBytesRead) { + Atom.ContainerAtom containerAtom = containerAtoms.pop(); + if (containerAtom.type == Atom.TYPE_moov) { + processMoovAtom(containerAtom); + } else if (!containerAtoms.isEmpty()) { + containerAtoms.peek().add(containerAtom); + } + } + } + + private void enterState(int state) { + switch (state) { + case STATE_READING_ATOM_HEADER: + atomBytesRead = 0; + atomSize = 0; + break; + } + parserState = state; + inputStream.mark(); + } + + /** Updates the stored track metadata to reflect the contents on the specified moov atom. */ + private void processMoovAtom(Atom.ContainerAtom moov) { + List tracks = new ArrayList(); + long earliestSampleOffset = Long.MAX_VALUE; + for (int i = 0; i < moov.containerChildren.size(); i++) { + Atom.ContainerAtom atom = moov.containerChildren.get(i); + if (atom.type != Atom.TYPE_trak) { + continue; + } + + Track track = CommonMp4AtomParsers.parseTrak(atom, moov.getLeafAtomOfType(Atom.TYPE_mvhd)); + if (track.type != Track.TYPE_AUDIO && track.type != Track.TYPE_VIDEO) { + continue; + } + + Atom.ContainerAtom stblAtom = atom.getContainerAtomOfType(Atom.TYPE_mdia) + .getContainerAtomOfType(Atom.TYPE_minf).getContainerAtomOfType(Atom.TYPE_stbl); + Mp4TrackSampleTable trackSampleTable = CommonMp4AtomParsers.parseStbl(track, stblAtom); + + if (trackSampleTable.getSampleCount() == 0) { + continue; + } + + tracks.add(new Mp4Track(track, trackSampleTable)); + + // Keep track of the byte offset of the earliest sample. + long firstSampleOffset = trackSampleTable.offsets[0]; + if (firstSampleOffset < earliestSampleOffset) { + earliestSampleOffset = firstSampleOffset; + } + } + this.tracks = tracks.toArray(new Mp4Track[0]); + + if (earliestSampleOffset < inputStream.getReadPosition()) { + loadFromOffset(earliestSampleOffset); + } + + prepared = true; + } + + /** Returns an unmodifiable set of atom types. */ + private static Set getAtomTypeSet(int... atomTypes) { + Set atomTypeSet = new HashSet(); + for (int atomType : atomTypes) { + atomTypeSet.add(atomType); + } + return Collections.unmodifiableSet(atomTypeSet); + } + + private int getRetryDelayMs(int errorCount) { + return Math.min((errorCount - 1) * 1000, 5000); + } + + private void maybeThrowLoadError() throws IOException { + if (loadErrorCount > loadRetryCount) { + throw lastLoadError; + } + } + + private static final class Mp4Track { + + public final Track track; + public final Mp4TrackSampleTable sampleTable; + + public boolean selected; + public int sampleIndex; + + public Mp4Track(Track track, Mp4TrackSampleTable sampleTable) { + this.track = track; + this.sampleTable = sampleTable; + } + + } + +} diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/BufferedNonBlockingInputStream.java b/library/src/main/java/com/google/android/exoplayer/upstream/BufferedNonBlockingInputStream.java new file mode 100644 index 0000000000..f511e3e6f4 --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/upstream/BufferedNonBlockingInputStream.java @@ -0,0 +1,150 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.upstream; + +import com.google.android.exoplayer.util.Assertions; + +import java.nio.ByteBuffer; + +/** + * Input stream with non-blocking reading/skipping that also stores read/skipped data in a buffer. + * Call {@link #mark} to discard any buffered data before the current reading position. Call + * {@link #returnToMark} to move the current reading position back to the marked position, which is + * initially the start of the input stream. + */ +public final class BufferedNonBlockingInputStream implements NonBlockingInputStream { + + private final NonBlockingInputStream inputStream; + private final byte[] bufferedBytes; + + private long inputStreamPosition; + + private int readPosition; + private int writePosition; + + /** + * Wraps the specified {@code nonBlockingInputStream} for buffered reading using a buffer of size + * {@code bufferSize} bytes. + */ + public BufferedNonBlockingInputStream( + NonBlockingInputStream nonBlockingInputStream, int bufferSize) { + inputStream = Assertions.checkNotNull(nonBlockingInputStream); + bufferedBytes = new byte[bufferSize]; + } + + @Override + public int skip(int length) { + return consumeStream(null, null, 0, length); + } + + @Override + public int read(byte[] buffer, int offset, int length) { + return consumeStream(null, buffer, offset, length); + } + + @Override + public int read(ByteBuffer buffer, int length) { + return consumeStream(buffer, null, 0, length); + } + + @Override + public long getAvailableByteCount() { + // The amount that can be read from the input stream is limited by how much can be buffered. + return (writePosition - readPosition) + + Math.min(inputStream.getAvailableByteCount(), bufferedBytes.length - writePosition); + } + + @Override + public boolean isEndOfStream() { + return writePosition == readPosition && inputStream.isEndOfStream(); + } + + @Override + public void close() { + inputStream.close(); + inputStreamPosition = -1; + } + + /** Returns the current position in the stream. */ + public long getReadPosition() { + return inputStreamPosition - (writePosition - readPosition); + } + + /** + * Moves the mark to be at the current position. Any data before the current position is + * discarded. After calling this method, calling {@link #returnToMark} will move the reading + * position back to the mark position. + */ + public void mark() { + System.arraycopy(bufferedBytes, readPosition, bufferedBytes, 0, writePosition - readPosition); + writePosition -= readPosition; + readPosition = 0; + } + + /** Moves the current position back to the mark position. */ + public void returnToMark() { + readPosition = 0; + } + + /** + * Reads or skips data from the input stream. If {@code byteBuffer} is non-{@code null}, reads + * {@code length} bytes into {@code byteBuffer} (other arguments are ignored). If + * {@code byteArray} is non-{@code null}, reads {@code length} bytes into {@code byteArray} at + * {@code offset} (other arguments are ignored). Otherwise, skips {@code length} bytes. + * + * @param byteBuffer {@link ByteBuffer} to read into, or {@code null} to read into + * {@code byteArray} or skip. + * @param byteArray Byte array to read into, or {@code null} to read into {@code byteBuffer} or + * skip. + * @param offset Offset in {@code byteArray} to write to, if it is non-{@code null}. + * @param length Number of bytes to read or skip. + * @return The number of bytes consumed, or -1 if nothing was consumed and the end of stream was + * reached. + */ + private int consumeStream(ByteBuffer byteBuffer, byte[] byteArray, int offset, int length) { + // If necessary, reduce length so that we do not need to write past the end of the array. + int pendingBytes = writePosition - readPosition; + length = Math.min(length, bufferedBytes.length - writePosition + pendingBytes); + + // If reading past the end of buffered data, request more and populate the buffer. + int streamBytesRead = 0; + if (length - pendingBytes > 0) { + streamBytesRead = inputStream.read(bufferedBytes, writePosition, length - pendingBytes); + if (streamBytesRead > 0) { + inputStreamPosition += streamBytesRead; + + writePosition += streamBytesRead; + pendingBytes += streamBytesRead; + } + } + + // Signal the end of the stream if nothing more will be read. + if (streamBytesRead == -1 && pendingBytes == 0) { + return -1; + } + + // Fill the buffer using buffered data if reading, or just skip otherwise. + length = Math.min(pendingBytes, length); + if (byteBuffer != null) { + byteBuffer.put(bufferedBytes, readPosition, length); + } else if (byteArray != null) { + System.arraycopy(bufferedBytes, readPosition, byteArray, offset, length); + } + readPosition += length; + return length; + } + +} diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceStream.java b/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceStream.java index 33519d4e6c..82dd5a3309 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceStream.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DataSourceStream.java @@ -47,6 +47,10 @@ public final class DataSourceStream implements Loadable, NonBlockingInputStream private final Allocator allocator; private final ReadHead readHead; + /** Whether {@link #allocation}'s capacity is fixed. If true, the allocation is not resized. */ + private final boolean isAllocationFixedSize; + private final int allocationSize; + private Allocation allocation; private volatile boolean loadCanceled; @@ -58,6 +62,9 @@ public final class DataSourceStream implements Loadable, NonBlockingInputStream private int writeFragmentRemainingLength; /** + * Constructs an instance whose allocation grows to contain all of the data specified by the + * {@code dataSpec}. + * * @param dataSource The source from which the data should be loaded. * @param dataSpec Defines the data to be loaded. {@code dataSpec.length} must not exceed * {@link Integer#MAX_VALUE}. If {@code dataSpec.length == C.LENGTH_UNBOUNDED} then @@ -72,12 +79,48 @@ public final class DataSourceStream implements Loadable, NonBlockingInputStream this.allocator = allocator; resolvedLength = C.LENGTH_UNBOUNDED; readHead = new ReadHead(); + + isAllocationFixedSize = false; + allocationSize = 0; + } + + /** + * Constructs an instance whose allocation is of a fixed size, which may be smaller than the data + * specified by the {@code dataSpec}. + *

+ * The allocation size determines how far ahead loading can proceed relative to the current + * reading position. + * + * @param dataSource The source form which the data should be loaded. + * @param dataSpec Defines the data to be loaded. + * @param allocator Used to obtain an {@link Allocation} for holding the data. + * @param allocationSize The minimum size for a fixed-size allocation that will hold the data + * loaded from {@code dataSource}. + */ + public DataSourceStream( + DataSource dataSource, DataSpec dataSpec, Allocator allocator, int allocationSize) { + Assertions.checkState(dataSpec.length <= Integer.MAX_VALUE); + this.dataSource = dataSource; + this.dataSpec = dataSpec; + this.allocator = allocator; + this.allocationSize = allocationSize; + resolvedLength = C.LENGTH_UNBOUNDED; + readHead = new ReadHead(); + + isAllocationFixedSize = true; } /** * Resets the read position to the start of the data. + * + * @throws UnsupportedOperationException Thrown if the allocation size is fixed. */ public void resetReadPosition() { + if (isAllocationFixedSize) { + throw new UnsupportedOperationException( + "The read position cannot be reset when using a fixed allocation"); + } + readHead.reset(); } @@ -176,7 +219,12 @@ public final class DataSourceStream implements Loadable, NonBlockingInputStream byte[][] buffers = allocation.getBuffers(); while (bytesRead < bytesToRead) { if (readHead.fragmentRemaining == 0) { - readHead.fragmentIndex++; + if (readHead.fragmentIndex == buffers.length - 1) { + Assertions.checkState(isAllocationFixedSize); + readHead.fragmentIndex = 0; + } else { + readHead.fragmentIndex++; + } readHead.fragmentOffset = allocation.getFragmentOffset(readHead.fragmentIndex); readHead.fragmentRemaining = allocation.getFragmentLength(readHead.fragmentIndex); } @@ -194,6 +242,13 @@ public final class DataSourceStream implements Loadable, NonBlockingInputStream readHead.fragmentRemaining -= bufferReadLength; } + if (isAllocationFixedSize) { + synchronized (readHead) { + // Notify load() of the updated position so it can resume. + readHead.notify(); + } + } + return bytesRead; } @@ -210,6 +265,7 @@ public final class DataSourceStream implements Loadable, NonBlockingInputStream } @Override + @SuppressWarnings("NonAtomicVolatileUpdate") public void load() throws IOException, InterruptedException { if (loadCanceled || isLoadFinished()) { // The load was canceled, or is already complete. @@ -221,7 +277,7 @@ public final class DataSourceStream implements Loadable, NonBlockingInputStream if (loadPosition == 0 && resolvedLength == C.LENGTH_UNBOUNDED) { loadDataSpec = dataSpec; long resolvedLength = dataSource.open(loadDataSpec); - if (resolvedLength > Integer.MAX_VALUE) { + if (!isAllocationFixedSize && resolvedLength > Integer.MAX_VALUE) { throw new DataSourceStreamLoadException( new UnexpectedLengthException(dataSpec.length, resolvedLength)); } @@ -235,9 +291,13 @@ public final class DataSourceStream implements Loadable, NonBlockingInputStream } if (allocation == null) { - int initialAllocationSize = resolvedLength != C.LENGTH_UNBOUNDED - ? (int) resolvedLength : CHUNKED_ALLOCATION_INCREMENT; - allocation = allocator.allocate(initialAllocationSize); + if (isAllocationFixedSize) { + allocation = allocator.allocate(allocationSize); + } else { + int initialAllocationSize = resolvedLength != C.LENGTH_UNBOUNDED + ? (int) resolvedLength : CHUNKED_ALLOCATION_INCREMENT; + allocation = allocator.allocate(initialAllocationSize); + } } int allocationCapacity = allocation.capacity(); @@ -253,18 +313,25 @@ public final class DataSourceStream implements Loadable, NonBlockingInputStream if (Thread.interrupted()) { throw new InterruptedException(); } - read = dataSource.read(buffers[writeFragmentIndex], writeFragmentOffset, - writeFragmentRemainingLength); + + int bytesToWrite = getBytesToWrite(); + read = dataSource.read(buffers[writeFragmentIndex], writeFragmentOffset, bytesToWrite); if (read > 0) { loadPosition += read; writeFragmentOffset += read; writeFragmentRemainingLength -= read; if (writeFragmentRemainingLength == 0 && maybeMoreToLoad()) { writeFragmentIndex++; - if (loadPosition == allocationCapacity) { - allocation.ensureCapacity(allocationCapacity + CHUNKED_ALLOCATION_INCREMENT); - allocationCapacity = allocation.capacity(); - buffers = allocation.getBuffers(); + if (writeFragmentIndex == buffers.length) { + if (isAllocationFixedSize) { + // Wrap back to the first fragment. + writeFragmentIndex = 0; + } else { + // Grow the allocation. + allocation.ensureCapacity(allocationCapacity + CHUNKED_ALLOCATION_INCREMENT); + allocationCapacity = allocation.capacity(); + buffers = allocation.getBuffers(); + } } writeFragmentOffset = allocation.getFragmentOffset(writeFragmentIndex); writeFragmentRemainingLength = allocation.getFragmentLength(writeFragmentIndex); @@ -281,6 +348,25 @@ public final class DataSourceStream implements Loadable, NonBlockingInputStream } } + /** + * Returns the number of bytes that can be written to the current fragment, blocking until the + * reader has consumed data if the allocation has a fixed size and is full. + */ + private int getBytesToWrite() throws InterruptedException { + if (!isAllocationFixedSize) { + return writeFragmentRemainingLength; + } + + synchronized (readHead) { + while (loadPosition == readHead.position + allocation.capacity()) { + readHead.wait(); + } + } + + return Math.min(writeFragmentRemainingLength, + allocation.capacity() - (int) (loadPosition - readHead.position)); + } + private boolean maybeMoreToLoad() { return resolvedLength == C.LENGTH_UNBOUNDED || loadPosition < resolvedLength; } diff --git a/library/src/test/java/com/google/android/exoplayer/source/Mp4SampleExtractorTest.java b/library/src/test/java/com/google/android/exoplayer/source/Mp4SampleExtractorTest.java new file mode 100644 index 0000000000..1045b7b7dc --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/source/Mp4SampleExtractorTest.java @@ -0,0 +1,622 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.source; + +import com.google.android.exoplayer.C; +import com.google.android.exoplayer.MediaFormat; +import com.google.android.exoplayer.SampleHolder; +import com.google.android.exoplayer.SampleSource; +import com.google.android.exoplayer.mp4.Atom; +import com.google.android.exoplayer.upstream.ByteArrayDataSource; +import com.google.android.exoplayer.upstream.DataSource; +import com.google.android.exoplayer.upstream.DataSpec; +import com.google.android.exoplayer.util.Assertions; +import com.google.android.exoplayer.util.MimeTypes; +import com.google.android.exoplayer.util.Util; + +import android.annotation.SuppressLint; +import android.annotation.TargetApi; +import android.media.MediaExtractor; +import android.net.Uri; +import android.os.Handler; +import android.os.Looper; +import android.os.Message; + +import junit.framework.TestCase; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CountDownLatch; + +/** + * Tests for {@link Mp4SampleExtractor}. + */ +@TargetApi(16) +public class Mp4SampleExtractorTest extends TestCase { + + /** String of hexadecimal bytes containing the video stsd payload from an AVC video. */ + private static final byte[] VIDEO_STSD_PAYLOAD = getByteArray( + "00000000000000010000009961766331000000000000000100000000000000000000000000000000050002" + + "d00048000000480000000000000001000000000000000000000000000000000000000000000000000000" + + "00000000000018ffff0000002f617663430164001fffe100186764001facb402802dd808800000030080" + + "00001e078c195001000468ee3cb000000014627472740000e35c0042a61000216cb8"); + private static final byte[] VIDEO_HDLR_PAYLOAD = getByteArray("000000000000000076696465"); + private static final byte[] VIDEO_MDHD_PAYLOAD = + getByteArray("0000000000000000cf6c48890000001e00001c8a55c40000"); + private static final int TIMESCALE = 30; + private static final int VIDEO_WIDTH = 1280; + private static final int VIDEO_HEIGHT = 720; + + /** String of hexadecimal bytes containing the video stsd payload for an mp4v track. */ + private static final byte[] VIDEO_STSD_MP4V_PAYLOAD = getByteArray( + "0000000000000001000000A36D703476000000000000000100000000000000000000000000000000014000" + + "B40048000000480000000000000001000000000000000000000000000000000000000000000000000000" + + "00000000000018FFFF0000004D6573647300000000033F00000004372011001A400004CF280002F11805" + + "28000001B001000001B58913000001000000012000C48D8800F50A04169463000001B2476F6F676C6506" + + "0102"); + private static final int VIDEO_MP4V_WIDTH = 320; + private static final int VIDEO_MP4V_HEIGHT = 180; + + /** String of hexadecimal bytes containing the audio stsd payload from an AAC track. */ + private static final byte[] AUDIO_STSD_PAYLOAD = getByteArray( + "0000000000000001000000596d703461000000000000000100000000000000000001001000000000ac4400" + + "000000003565736473000000000327000000041f401500023e00024bc000023280051012080000000000" + + "000000000000000000060102"); + private static final byte[] AUDIO_HDLR_PAYLOAD = getByteArray("0000000000000000736f756e"); + private static final byte[] AUDIO_MDHD_PAYLOAD = + getByteArray("00000000cf6c4889cf6c488a0000ac4400a3e40055c40000"); + + /** String of hexadecimal bytes containing an mvhd payload from an AVC/AAC video. */ + private static final byte[] MVHD_PAYLOAD = getByteArray( + "00000000cf6c4888cf6c48880000025800023ad40001000001000000000000000000000000010000000000" + + "000000000000000000000100000000000000000000000000004000000000000000000000000000000000" + + "000000000000000000000000000003"); + + /** String of hexadecimal bytes containing a tkhd payload with an unknown duration. */ + private static final byte[] TKHD_PAYLOAD = + getByteArray("0000000000000000000000000000000000000000FFFFFFFF"); + + /** Video frame timestamps in time units. */ + private static final int[] SAMPLE_TIMESTAMPS = {0, 2, 3, 5, 6, 7}; + /** Video frame sizes in bytes, including a very large sample. */ + private static final int[] SAMPLE_SIZES = {100, 20, 20, 44, 100, 1 * 1024 * 1024}; + /** Indices of key-frames. */ + private static final int[] SYNCHRONIZATION_SAMPLE_INDICES = {0, 4, 5}; + /** Indices of video frame chunk offsets. */ + private static final int[] CHUNK_OFFSETS = {1000, 2000, 3000, 4000}; + /** Numbers of video frames in each chunk. */ + private static final int[] SAMPLES_IN_CHUNK = {2, 2, 1, 1}; + /** The mdat box must be large enough to avoid reading chunk sample data out of bounds. */ + private static final int MDAT_SIZE = 10 * 1024 * 1024; + /** Fake HTTP URI that can't be opened. */ + private static final Uri FAKE_URI = Uri.parse("http://"); + /** Empty byte array. */ + private static final byte[] EMPTY = new byte[0]; + + public void testParsesValidMp4File() throws Exception { + // Given an extractor with an AVC/AAC file + Mp4ExtractorWrapper extractor = + prepareSampleExtractor(getFakeDataSource(true /* includeStss */, false /* mp4vFormat */)); + + // The MIME type and metadata are set correctly. + assertEquals(MimeTypes.VIDEO_H264, extractor.mediaFormats[0].mimeType); + assertEquals(MimeTypes.AUDIO_AAC, extractor.mediaFormats[1].mimeType); + + assertEquals(VIDEO_WIDTH, extractor.selectedTrackMediaFormat.width); + assertEquals(VIDEO_HEIGHT, extractor.selectedTrackMediaFormat.height); + } + + public void testParsesValidMp4vFile() throws Exception { + // Given an extractor with an mp4v file + Mp4ExtractorWrapper extractor = + prepareSampleExtractor(getFakeDataSource(true /* includeStss */, true /* mp4vFormat */)); + + // The MIME type and metadata are set correctly. + assertEquals(MimeTypes.VIDEO_MP4V, extractor.selectedTrackMediaFormat.mimeType); + assertEquals(VIDEO_MP4V_WIDTH, extractor.selectedTrackMediaFormat.width); + assertEquals(VIDEO_MP4V_HEIGHT, extractor.selectedTrackMediaFormat.height); + } + + public void testSampleTimestampsMatch() throws Exception { + // Given an extractor + Mp4ExtractorWrapper extractor = + prepareSampleExtractor(getFakeDataSource(true /* includeStss */, false /* mp4vFormat */)); + + // The timestamps are set correctly. + SampleHolder sampleHolder = new SampleHolder(SampleHolder.BUFFER_REPLACEMENT_MODE_NORMAL); + for (int i = 0; i < SAMPLE_TIMESTAMPS.length; i++) { + extractor.readSample(0, sampleHolder); + assertEquals(getVideoTimestampUs(SAMPLE_TIMESTAMPS[i]), sampleHolder.timeUs); + } + assertEquals(SampleSource.END_OF_STREAM, extractor.readSample(0, sampleHolder)); + } + + public void testSeekToStart() throws Exception { + // When seeking to the start + int timestampTimeUnits = SAMPLE_TIMESTAMPS[0]; + long sampleTimestampUs = + getTimestampUsResultingFromSeek(getVideoTimestampUs(timestampTimeUnits)); + + // The timestamp is at the start. + assertEquals(getVideoTimestampUs(timestampTimeUnits), sampleTimestampUs); + } + + public void testSeekToEnd() throws Exception { + // When seeking to the end + int timestampTimeUnits = SAMPLE_TIMESTAMPS[SAMPLE_TIMESTAMPS.length - 1]; + long sampleTimestampUs = + getTimestampUsResultingFromSeek(getVideoTimestampUs(timestampTimeUnits)); + + // The timestamp is at the end. + assertEquals(getVideoTimestampUs(timestampTimeUnits), sampleTimestampUs); + } + + public void testSeekToNearStart() throws Exception { + // When seeking to just after the start + int timestampTimeUnits = SAMPLE_TIMESTAMPS[0]; + long sampleTimestampUs = + getTimestampUsResultingFromSeek(getVideoTimestampUs(timestampTimeUnits) + 1); + + // The timestamp is at the start. + assertEquals(getVideoTimestampUs(timestampTimeUnits), sampleTimestampUs); + } + + public void testSeekToBeforeLastSynchronizationSample() throws Exception { + // When seeking to just after the start + long sampleTimestampUs = + getTimestampUsResultingFromSeek(getVideoTimestampUs(SAMPLE_TIMESTAMPS[4]) - 1); + + // The timestamp is at the start. + assertEquals(getVideoTimestampUs(SAMPLE_TIMESTAMPS[0]), sampleTimestampUs); + } + + public void testAllSamplesAreSynchronizationSamplesWhenStssIsMissing() throws Exception { + // Given an extractor without an stss box + Mp4ExtractorWrapper extractor = + prepareSampleExtractor(getFakeDataSource(false /* includeStss */, false /* mp4vFormat */)); + // All samples are synchronization samples. + SampleHolder sampleHolder = new SampleHolder(SampleHolder.BUFFER_REPLACEMENT_MODE_NORMAL); + int sampleIndex = 0; + while (true) { + int result = extractor.readSample(0, sampleHolder); + if (result == SampleSource.SAMPLE_READ) { + assertTrue((sampleHolder.flags & MediaExtractor.SAMPLE_FLAG_SYNC) != 0); + sampleHolder.clearData(); + sampleIndex++; + } else if (result == SampleSource.END_OF_STREAM) { + break; + } + } + assertTrue(sampleIndex == SAMPLE_SIZES.length); + } + + public void testReadAllSamplesSucceeds() throws Exception { + // Given an extractor + Mp4ExtractorWrapper extractor = + prepareSampleExtractor(getFakeDataSource(true /* includeStss */, false /* mp4vFormat */)); + + // The sample sizes are set correctly. + SampleHolder sampleHolder = new SampleHolder(SampleHolder.BUFFER_REPLACEMENT_MODE_NORMAL); + int sampleIndex = 0; + while (true) { + int result = extractor.readSample(0, sampleHolder); + if (result == SampleSource.SAMPLE_READ) { + assertEquals(SAMPLE_SIZES[sampleIndex], sampleHolder.size); + sampleHolder.clearData(); + sampleIndex++; + } else if (result == SampleSource.END_OF_STREAM) { + break; + } + } + assertEquals(SAMPLE_SIZES.length, sampleIndex); + } + + /** Returns the sample time read after seeking to {@code timestampTimeUnits}. */ + private static long getTimestampUsResultingFromSeek(long timestampTimeUnits) throws Exception { + Mp4ExtractorWrapper extractor = + prepareSampleExtractor(getFakeDataSource(true /* includeStss */, false /* mp4vFormat */)); + + extractor.seekTo(timestampTimeUnits); + + SampleHolder sampleHolder = new SampleHolder(SampleHolder.BUFFER_REPLACEMENT_MODE_NORMAL); + while (true) { + int result = extractor.readSample(0, sampleHolder); + if (result == SampleSource.SAMPLE_READ) { + return sampleHolder.timeUs; + } else if (result == SampleSource.END_OF_STREAM) { + return -1; + } + } + } + + private static Mp4ExtractorWrapper prepareSampleExtractor(DataSource dataSource) + throws Exception { + Mp4ExtractorWrapper extractor = new Mp4ExtractorWrapper(dataSource); + extractor.prepare(); + return extractor; + } + + /** Returns a video timestamp in microseconds corresponding to {@code timeUnits}. */ + private static long getVideoTimestampUs(int timeUnits) { + return Util.scaleLargeTimestamp(timeUnits, C.MICROS_PER_SECOND, TIMESCALE); + } + + private static byte[] getStco() { + byte[] result = new byte[4 + 4 + 4 * CHUNK_OFFSETS.length]; + ByteBuffer buffer = ByteBuffer.wrap(result); + buffer.putInt(0); // Version (skipped) + buffer.putInt(CHUNK_OFFSETS.length); + for (int chunkOffset : CHUNK_OFFSETS) { + buffer.putInt(chunkOffset); + } + return result; + } + + private static byte[] getStsc() { + int samplesPerChunk = -1; + List samplesInChunkChangeIndices = new ArrayList(); + for (int i = 0; i < SAMPLES_IN_CHUNK.length; i++) { + if (SAMPLES_IN_CHUNK[i] != samplesPerChunk) { + samplesInChunkChangeIndices.add(i); + samplesPerChunk = SAMPLES_IN_CHUNK[i]; + } + } + + byte[] result = new byte[4 + 4 + 3 * 4 * samplesInChunkChangeIndices.size()]; + ByteBuffer buffer = ByteBuffer.wrap(result); + buffer.putInt(0); // Version (skipped) + buffer.putInt(samplesInChunkChangeIndices.size()); + for (int index : samplesInChunkChangeIndices) { + buffer.putInt(index + 1); + buffer.putInt(SAMPLES_IN_CHUNK[index]); + buffer.putInt(0); // Sample description index (skipped) + } + return result; + } + + private static byte[] getStsz() { + byte[] result = new byte[4 + 4 + 4 + 4 * SAMPLE_SIZES.length]; + ByteBuffer buffer = ByteBuffer.wrap(result); + buffer.putInt(0); // Version (skipped) + buffer.putInt(0); // No fixed sample size. + buffer.putInt(SAMPLE_SIZES.length); + for (int size : SAMPLE_SIZES) { + buffer.putInt(size); + } + return result; + } + + private static byte[] getStss() { + byte[] result = new byte[4 + 4 + 4 * SYNCHRONIZATION_SAMPLE_INDICES.length]; + ByteBuffer buffer = ByteBuffer.wrap(result); + buffer.putInt(0); // Version (skipped) + buffer.putInt(SYNCHRONIZATION_SAMPLE_INDICES.length); + for (int synchronizationSampleIndex : SYNCHRONIZATION_SAMPLE_INDICES) { + buffer.putInt(synchronizationSampleIndex + 1); + } + return result; + } + + private static byte[] getStts() { + int sampleTimestampDeltaChanges = 0; + int currentSampleTimestampDelta = -1; + for (int i = 1; i < SAMPLE_TIMESTAMPS.length; i++) { + int timestampDelta = SAMPLE_TIMESTAMPS[i] - SAMPLE_TIMESTAMPS[i - 1]; + if (timestampDelta != currentSampleTimestampDelta) { + sampleTimestampDeltaChanges++; + currentSampleTimestampDelta = timestampDelta; + } + } + + byte[] result = new byte[4 + 4 + 2 * 4 * sampleTimestampDeltaChanges]; + ByteBuffer buffer = ByteBuffer.wrap(result); + buffer.putInt(0); // Version (skipped); + buffer.putInt(sampleTimestampDeltaChanges); + int lastTimestampDeltaChangeIndex = 1; + currentSampleTimestampDelta = SAMPLE_TIMESTAMPS[1] - SAMPLE_TIMESTAMPS[0]; + for (int i = 2; i < SAMPLE_TIMESTAMPS.length; i++) { + int timestampDelta = SAMPLE_TIMESTAMPS[i] - SAMPLE_TIMESTAMPS[i - 1]; + if (timestampDelta != currentSampleTimestampDelta) { + buffer.putInt(i - lastTimestampDeltaChangeIndex); + lastTimestampDeltaChangeIndex = i; + buffer.putInt(currentSampleTimestampDelta); + currentSampleTimestampDelta = timestampDelta; + } + } + // The last sample also has a duration, so the number of entries is the number of samples. + buffer.putInt(SAMPLE_TIMESTAMPS.length - lastTimestampDeltaChangeIndex + 1); + buffer.putInt(currentSampleTimestampDelta); + return result; + } + + private static byte[] getMdat() { + // TODO: Put NAL length tags in at each sample position so the sample lengths don't have to + // be multiples of four. + return new byte[MDAT_SIZE]; + } + + private static final DataSource getFakeDataSource(boolean includeStss, boolean mp4vFormat) { + return new ByteArrayDataSource(includeStss + ? getTestMp4File(mp4vFormat) : getTestMp4FileWithoutSynchronizationData(mp4vFormat)); + } + + /** Gets a valid MP4 file with audio/video tracks and synchronization data. */ + private static byte[] getTestMp4File(boolean mp4vFormat) { + return Mp4Atom.serialize( + atom(Atom.TYPE_ftyp, EMPTY), + atom(Atom.TYPE_moov, + atom(Atom.TYPE_mvhd, MVHD_PAYLOAD), + atom(Atom.TYPE_trak, + atom(Atom.TYPE_tkhd, TKHD_PAYLOAD), + atom(Atom.TYPE_mdia, + atom(Atom.TYPE_mdhd, VIDEO_MDHD_PAYLOAD), + atom(Atom.TYPE_hdlr, VIDEO_HDLR_PAYLOAD), + atom(Atom.TYPE_minf, + atom(Atom.TYPE_vmhd, EMPTY), + atom(Atom.TYPE_stbl, + atom(Atom.TYPE_stsd, + mp4vFormat ? VIDEO_STSD_MP4V_PAYLOAD : VIDEO_STSD_PAYLOAD), + atom(Atom.TYPE_stts, getStts()), + atom(Atom.TYPE_stss, getStss()), + atom(Atom.TYPE_stsc, getStsc()), + atom(Atom.TYPE_stsz, getStsz()), + atom(Atom.TYPE_stco, getStco()))))), + atom(Atom.TYPE_trak, + atom(Atom.TYPE_tkhd, TKHD_PAYLOAD), + atom(Atom.TYPE_mdia, + atom(Atom.TYPE_mdhd, AUDIO_MDHD_PAYLOAD), + atom(Atom.TYPE_hdlr, AUDIO_HDLR_PAYLOAD), + atom(Atom.TYPE_minf, + atom(Atom.TYPE_vmhd, EMPTY), + atom(Atom.TYPE_stbl, + atom(Atom.TYPE_stsd, AUDIO_STSD_PAYLOAD), + atom(Atom.TYPE_stts, getStts()), + atom(Atom.TYPE_stss, getStss()), + atom(Atom.TYPE_stsc, getStsc()), + atom(Atom.TYPE_stsz, getStsz()), + atom(Atom.TYPE_stco, getStco())))))), + atom(Atom.TYPE_mdat, getMdat())); + } + + /** Gets a valid MP4 file with audio/video tracks and without a synchronization table. */ + private static byte[] getTestMp4FileWithoutSynchronizationData(boolean mp4vFormat) { + return Mp4Atom.serialize( + atom(Atom.TYPE_ftyp, EMPTY), + atom(Atom.TYPE_moov, + atom(Atom.TYPE_mvhd, MVHD_PAYLOAD), + atom(Atom.TYPE_trak, + atom(Atom.TYPE_tkhd, TKHD_PAYLOAD), + atom(Atom.TYPE_mdia, + atom(Atom.TYPE_mdhd, VIDEO_MDHD_PAYLOAD), + atom(Atom.TYPE_hdlr, VIDEO_HDLR_PAYLOAD), + atom(Atom.TYPE_minf, + atom(Atom.TYPE_vmhd, EMPTY), + atom(Atom.TYPE_stbl, + atom(Atom.TYPE_stsd, + mp4vFormat ? VIDEO_STSD_MP4V_PAYLOAD : VIDEO_STSD_PAYLOAD), + atom(Atom.TYPE_stts, getStts()), + atom(Atom.TYPE_stsc, getStsc()), + atom(Atom.TYPE_stsz, getStsz()), + atom(Atom.TYPE_stco, getStco()))))), + atom(Atom.TYPE_trak, + atom(Atom.TYPE_tkhd, TKHD_PAYLOAD), + atom(Atom.TYPE_mdia, + atom(Atom.TYPE_mdhd, AUDIO_MDHD_PAYLOAD), + atom(Atom.TYPE_hdlr, AUDIO_HDLR_PAYLOAD), + atom(Atom.TYPE_minf, + atom(Atom.TYPE_vmhd, EMPTY), + atom(Atom.TYPE_stbl, + atom(Atom.TYPE_stsd, AUDIO_STSD_PAYLOAD), + atom(Atom.TYPE_stts, getStts()), + atom(Atom.TYPE_stsc, getStsc()), + atom(Atom.TYPE_stsz, getStsz()), + atom(Atom.TYPE_stco, getStco())))))), + atom(Atom.TYPE_mdat, getMdat())); + } + + private static Mp4Atom atom(int type, Mp4Atom... containedMp4Atoms) { + return new Mp4Atom(type, containedMp4Atoms); + } + + private static Mp4Atom atom(int type, byte[] payload) { + return new Mp4Atom(type, payload); + } + + private static byte[] getByteArray(String hexBytes) { + byte[] result = new byte[hexBytes.length() / 2]; + for (int i = 0; i < result.length; i++) { + result[i] = (byte) ((Character.digit(hexBytes.charAt(i * 2), 16) << 4) + + Character.digit(hexBytes.charAt(i * 2 + 1), 16)); + } + return result; + } + + /** MP4 atom that can be serialized as a byte array. */ + private static final class Mp4Atom { + + public static byte[] serialize(Mp4Atom... atoms) { + int size = 0; + for (Mp4Atom atom : atoms) { + size += atom.getSize(); + } + ByteBuffer buffer = ByteBuffer.allocate(size); + for (Mp4Atom atom : atoms) { + atom.getData(buffer); + } + return buffer.array(); + } + + private static final int HEADER_SIZE = 8; + + private final int type; + private final Mp4Atom[] containedMp4Atoms; + private final byte[] payload; + + private Mp4Atom(int type, Mp4Atom... containedMp4Atoms) { + this.type = type; + this.containedMp4Atoms = containedMp4Atoms; + payload = null; + } + + private Mp4Atom(int type, byte[] payload) { + this.type = type; + this.payload = payload; + containedMp4Atoms = null; + } + + private int getSize() { + int size = HEADER_SIZE; + if (payload != null) { + size += payload.length; + } else { + for (Mp4Atom atom : containedMp4Atoms) { + size += atom.getSize(); + } + } + return size; + } + + private void getData(ByteBuffer byteBuffer) { + byteBuffer.putInt(getSize()); + byteBuffer.putInt(type); + + if (payload != null) { + byteBuffer.put(payload); + } else { + for (Mp4Atom atom : containedMp4Atoms) { + atom.getData(byteBuffer); + } + } + } + + } + + /** + * Creates a {@link Mp4SampleExtractor} on a separate thread with a looper, so that it can use a + * handler for loading, and provides blocking operations like {@link #seekTo} and + * {@link #readSample}. + */ + private static final class Mp4ExtractorWrapper extends Thread { + + private static final int MSG_PREPARE = 0; + private static final int MSG_SEEK_TO = 1; + private static final int MSG_READ_SAMPLE = 2; + private final DataSource dataSource; + + // Written by the handler's thread and read by the main thread. + public volatile MediaFormat[] mediaFormats; + public volatile MediaFormat selectedTrackMediaFormat; + private volatile Handler handler; + private volatile int readSampleResult; + private volatile Exception exception; + private volatile CountDownLatch pendingOperationLatch; + + public Mp4ExtractorWrapper(DataSource dataSource) { + super("Mp4SampleExtractorTest"); + this.dataSource = Assertions.checkNotNull(dataSource); + pendingOperationLatch = new CountDownLatch(1); + start(); + } + + public void prepare() throws Exception { + // Block until the handler has been created. + pendingOperationLatch.await(); + + // Block until the extractor has been prepared. + pendingOperationLatch = new CountDownLatch(1); + handler.sendEmptyMessage(MSG_PREPARE); + pendingOperationLatch.await(); + if (exception != null) { + throw exception; + } + } + + public void seekTo(long timestampUs) { + handler.obtainMessage(MSG_SEEK_TO, timestampUs).sendToTarget(); + } + + public int readSample(int trackIndex, SampleHolder sampleHolder) throws Exception { + // Block until the extractor has completed readSample. + pendingOperationLatch = new CountDownLatch(1); + handler.obtainMessage(MSG_READ_SAMPLE, trackIndex, 0, sampleHolder).sendToTarget(); + pendingOperationLatch.await(); + if (exception != null) { + throw exception; + } + return readSampleResult; + } + + @SuppressLint("HandlerLeak") + @Override + public void run() { + final Mp4SampleExtractor mp4SampleExtractor = + new Mp4SampleExtractor(dataSource, new DataSpec(FAKE_URI)); + Looper.prepare(); + handler = new Handler() { + @Override + public void handleMessage(Message message) { + try { + switch (message.what) { + case MSG_PREPARE: + if (!mp4SampleExtractor.prepare()) { + sendEmptyMessage(MSG_PREPARE); + } else { + // Select the video track and get its metadata. + mediaFormats = new MediaFormat[mp4SampleExtractor.getTrackCount()]; + for (int track = 0; track < mp4SampleExtractor.getTrackCount(); track++) { + MediaFormat mediaFormat = mp4SampleExtractor.getMediaFormat(track); + mediaFormats[track] = mediaFormat; + if (MimeTypes.isVideo(mediaFormat.mimeType)) { + mp4SampleExtractor.selectTrack(track); + selectedTrackMediaFormat = mediaFormat; + } + } + pendingOperationLatch.countDown(); + } + break; + case MSG_SEEK_TO: + long timestampUs = (long) message.obj; + mp4SampleExtractor.seekTo(timestampUs); + break; + case MSG_READ_SAMPLE: + int trackIndex = message.arg1; + SampleHolder sampleHolder = (SampleHolder) message.obj; + sampleHolder.clearData(); + readSampleResult = mp4SampleExtractor.readSample(trackIndex, sampleHolder); + if (readSampleResult == SampleSource.NOTHING_READ) { + Message.obtain(message).sendToTarget(); + return; + } + pendingOperationLatch.countDown(); + break; + } + } catch (Exception e) { + exception = e; + pendingOperationLatch.countDown(); + } + } + }; + + // Unblock waiting for the handler. + pendingOperationLatch.countDown(); + + Looper.loop(); + } + + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/upstream/BufferedNonBlockingInputStreamTest.java b/library/src/test/java/com/google/android/exoplayer/upstream/BufferedNonBlockingInputStreamTest.java new file mode 100644 index 0000000000..5b102e12d1 --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/upstream/BufferedNonBlockingInputStreamTest.java @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.upstream; + +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.google.android.exoplayer.SampleSource; + +import junit.framework.TestCase; + +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; + +import java.util.Arrays; + +/** + * Tests for {@link BufferedNonBlockingInputStream}. + */ +public class BufferedNonBlockingInputStreamTest extends TestCase { + + private static final int BUFFER_SIZE_BYTES = 16; + + @Mock private NonBlockingInputStream mockInputStream; + private BufferedNonBlockingInputStream bufferedInputStream; + + @Override + public void setUp() { + MockitoAnnotations.initMocks(this); + + bufferedInputStream = new BufferedNonBlockingInputStream(mockInputStream, BUFFER_SIZE_BYTES); + } + + public void testSkipClipsCountToBufferSizeWhenMarkSet() { + // When marking and skipping more than the buffer size + bufferedInputStream.mark(); + bufferedInputStream.skip(BUFFER_SIZE_BYTES + 1); + + // Then BUFFER_SIZE_BYTES are read. + verify(mockInputStream).read((byte[]) any(), eq(0), eq(BUFFER_SIZE_BYTES)); + } + + public void testSkipResetSkipUsesBufferedData() { + // Given a buffered input stream that has already read BUFFER_SIZE_BYTES + stubInputStreamForReadingBytes(); + bufferedInputStream.mark(); + bufferedInputStream.skip(BUFFER_SIZE_BYTES); + verify(mockInputStream).read((byte[]) any(), eq(0), eq(BUFFER_SIZE_BYTES)); + + // When resetting and reading the same amount, no extra data are read. + bufferedInputStream.returnToMark(); + bufferedInputStream.skip(BUFFER_SIZE_BYTES); + verify(mockInputStream).read((byte[]) any(), eq(0), eq(BUFFER_SIZE_BYTES)); + } + + public void testReturnsEndOfStreamAfterBufferedData() { + // Given a buffered input stream that has read 1 byte (to end-of-stream) and has been reset + stubInputStreamForReadingBytes(); + bufferedInputStream.mark(); + bufferedInputStream.skip(1); + stubInputStreamForReadingEndOfStream(); + bufferedInputStream.returnToMark(); + + // When skipping, first 1 byte is returned, then end-of-stream. + assertEquals(1, bufferedInputStream.skip(1)); + assertEquals(SampleSource.END_OF_STREAM, bufferedInputStream.skip(1)); + } + + public void testReadAtOffset() { + // Given a mock input stream that provide non-zero data + stubInputStreamForReadingBytes(); + + // When reading a byte at offset 1 + byte[] bytes = new byte[2]; + bufferedInputStream.mark(); + bufferedInputStream.read(bytes, 1, 1); + + // Then only the second byte is set. + assertTrue(Arrays.equals(new byte[] {(byte) 0, (byte) 0xFF}, bytes)); + } + + public void testSkipAfterMark() { + // Given a mock input stream that provides non-zero data, with three bytes read + stubInputStreamForReadingBytes(); + bufferedInputStream.skip(1); + bufferedInputStream.mark(); + bufferedInputStream.skip(2); + bufferedInputStream.returnToMark(); + + // Then it is possible to skip one byte after the mark and read two bytes. + assertEquals(1, bufferedInputStream.skip(1)); + assertEquals(2, bufferedInputStream.read(new byte[2], 0, 2)); + verify(mockInputStream).read((byte[]) any(), eq(0), eq(1)); + verify(mockInputStream).read((byte[]) any(), eq(0), eq(2)); + verify(mockInputStream).read((byte[]) any(), eq(2), eq(1)); + } + + /** Stubs the input stream to read 0xFF for all requests. */ + private void stubInputStreamForReadingBytes() { + when(mockInputStream.read((byte[]) any(), anyInt(), anyInt())).thenAnswer( + new Answer() { + + @Override + public Integer answer(InvocationOnMock invocation) throws Throwable { + byte[] bytes = (byte[]) invocation.getArguments()[0]; + int offset = (int) invocation.getArguments()[1]; + int length = (int) invocation.getArguments()[2]; + for (int i = 0; i < length; i++) { + bytes[i + offset] = (byte) 0xFF; + } + return length; + } + + }); + when(mockInputStream.skip(anyInt())).thenAnswer(new Answer() { + + @Override + public Integer answer(InvocationOnMock invocation) throws Throwable { + return (int) invocation.getArguments()[0]; + } + + }); + } + + /** Stubs the input stream to read end-of-stream for all requests. */ + private void stubInputStreamForReadingEndOfStream() { + when(mockInputStream.read((byte[]) any(), anyInt(), anyInt())) + .thenReturn(SampleSource.END_OF_STREAM); + } + +} From e54d07c1b09ee051d4ceedcde12f50433111c45d Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 17 Mar 2015 12:36:46 +0000 Subject: [PATCH 41/69] Fix issue with new extractor input --- .../exoplayer/hls/parser/DataSourceExtractorInput.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/DataSourceExtractorInput.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/DataSourceExtractorInput.java index f951bea7a3..5e23f986e0 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/DataSourceExtractorInput.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/DataSourceExtractorInput.java @@ -82,15 +82,15 @@ public final class DataSourceExtractorInput implements ExtractorInput { if (Thread.interrupted()) { throw new InterruptedException(); } - int bytesRead = dataSource.read(SCRATCH_SPACE, 0, remaining); + int bytesRead = dataSource.read(SCRATCH_SPACE, 0, Math.min(SCRATCH_SPACE.length, remaining)); if (bytesRead == -1) { isEnded = true; - return true; + return false; } remaining -= bytesRead; } position += length; - return false; + return true; } @Override From b73b9a0509b194e11e3ad7f051cf380c22118758 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Wed, 25 Mar 2015 12:08:45 +0000 Subject: [PATCH 42/69] Add workaround for #252 (but don't enable it by default). --- .../Ac3PassthroughAudioTrackRenderer.java | 2 +- .../MediaCodecAudioTrackRenderer.java | 2 +- .../android/exoplayer/audio/AudioTrack.java | 66 +++++++++++++++++-- 3 files changed, 63 insertions(+), 7 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/Ac3PassthroughAudioTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/Ac3PassthroughAudioTrackRenderer.java index 44325b44ea..1c8c967963 100644 --- a/library/src/main/java/com/google/android/exoplayer/Ac3PassthroughAudioTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/Ac3PassthroughAudioTrackRenderer.java @@ -281,7 +281,7 @@ public final class Ac3PassthroughAudioTrackRenderer extends TrackRenderer { protected void onDisabled() { audioSessionId = AudioTrack.SESSION_ID_NOT_SET; shouldReadInputBuffer = true; - audioTrack.reset(); + audioTrack.release(); } @Override diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java index a6ff3b0a44..34b76d1a76 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java @@ -202,7 +202,7 @@ public class MediaCodecAudioTrackRenderer extends MediaCodecTrackRenderer { protected void onDisabled() { audioSessionId = AudioTrack.SESSION_ID_NOT_SET; try { - audioTrack.reset(); + audioTrack.release(); } finally { super.onDisabled(); } diff --git a/library/src/main/java/com/google/android/exoplayer/audio/AudioTrack.java b/library/src/main/java/com/google/android/exoplayer/audio/AudioTrack.java index 9c33014da8..c589b813d3 100644 --- a/library/src/main/java/com/google/android/exoplayer/audio/AudioTrack.java +++ b/library/src/main/java/com/google/android/exoplayer/audio/AudioTrack.java @@ -44,6 +44,8 @@ import java.nio.ByteBuffer; *

Call {@link #reconfigure} when the output format changes. * *

Call {@link #reset} to free resources. It is safe to re-{@link #initialize} the instance. + * + *

Call {@link #release} when the instance will no longer be used. */ @TargetApi(16) public final class AudioTrack { @@ -91,6 +93,12 @@ public final class AudioTrack { /** Returned by {@link #getCurrentPositionUs} when the position is not set. */ public static final long CURRENT_POSITION_NOT_SET = Long.MIN_VALUE; + /** + * Set to {@code true} to enable a workaround for an issue where an audio effect does not keep its + * session active across releasing/initializing a new audio track, on platform API version < 21. + */ + private static final boolean ENABLE_PRE_V21_AUDIO_SESSION_WORKAROUND = false; + /** A minimum length for the {@link android.media.AudioTrack} buffer, in microseconds. */ private static final long MIN_BUFFER_DURATION_US = 250000; /** A maximum length for the {@link android.media.AudioTrack} buffer, in microseconds. */ @@ -132,6 +140,9 @@ public final class AudioTrack { private final ConditionVariable releasingConditionVariable; private final long[] playheadOffsets; + /** Used to keep the audio session active on pre-V21 builds (see {@link #initialize()}). */ + private android.media.AudioTrack keepSessionIdAudioTrack; + private android.media.AudioTrack audioTrack; private AudioTrackUtil audioTrackUtil; private int sampleRate; @@ -267,15 +278,37 @@ public final class AudioTrack { audioTrack = new android.media.AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, channelConfig, encoding, bufferSize, android.media.AudioTrack.MODE_STREAM, sessionId); } - checkAudioTrackInitialized(); + + sessionId = audioTrack.getAudioSessionId(); + if (ENABLE_PRE_V21_AUDIO_SESSION_WORKAROUND) { + if (Util.SDK_INT < 21) { + // The workaround creates an audio track with a one byte buffer on the same session, and + // does not release it until this object is released, which keeps the session active. + if (keepSessionIdAudioTrack != null + && sessionId != keepSessionIdAudioTrack.getAudioSessionId()) { + releaseKeepSessionIdAudioTrack(); + } + if (keepSessionIdAudioTrack == null) { + int sampleRate = 4000; // Equal to private android.media.AudioTrack.MIN_SAMPLE_RATE. + int channelConfig = AudioFormat.CHANNEL_OUT_MONO; + int encoding = AudioFormat.ENCODING_PCM_8BIT; + int bufferSize = 1; // Use a one byte buffer, as it is not actually used for playback. + keepSessionIdAudioTrack = new android.media.AudioTrack(AudioManager.STREAM_MUSIC, + sampleRate, channelConfig, encoding, bufferSize, android.media.AudioTrack.MODE_STATIC, + sessionId); + } + } + } + if (Util.SDK_INT >= 19) { audioTrackUtil = new AudioTrackUtilV19(audioTrack); } else { audioTrackUtil = new AudioTrackUtil(audioTrack); } setVolume(volume); - return audioTrack.getAudioSessionId(); + + return sessionId; } /** @@ -515,9 +548,9 @@ public final class AudioTrack { } /** - * Releases resources associated with this instance asynchronously. Calling {@link #initialize} - * will block until the audio track has been released, so it is safe to initialize immediately - * after resetting. + * Releases the underlying audio track asynchronously. Calling {@link #initialize} will block + * until the audio track has been released, so it is safe to initialize immediately after + * resetting. The audio session may remain active until the instance is {@link #release}d. */ public void reset() { if (isInitialized()) { @@ -547,6 +580,29 @@ public final class AudioTrack { } } + /** Releases all resources associated with this instance. */ + public void release() { + reset(); + releaseKeepSessionIdAudioTrack(); + } + + /** Releases {@link #keepSessionIdAudioTrack} asynchronously, if it is non-{@code null}. */ + private void releaseKeepSessionIdAudioTrack() { + if (keepSessionIdAudioTrack == null) { + return; + } + + // AudioTrack.release can take some time, so we call it on a background thread. + final android.media.AudioTrack toRelease = keepSessionIdAudioTrack; + keepSessionIdAudioTrack = null; + new Thread() { + @Override + public void run() { + toRelease.release(); + } + }.start(); + } + /** Returns whether {@link #getCurrentPositionUs} can return the current playback position. */ private boolean hasCurrentPositionUs() { return isInitialized() && startMediaTimeUs != START_NOT_SET; From 85be2aed0a5e5487504905d45c1a565d288feee2 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 10 Mar 2015 10:50:15 +0000 Subject: [PATCH 43/69] Add ability to release via Bintray. --- build.gradle | 2 ++ library/build.gradle | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/build.gradle b/build.gradle index 4cf5e94806..2864587d3f 100644 --- a/build.gradle +++ b/build.gradle @@ -17,9 +17,11 @@ buildscript { repositories { mavenCentral() + jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' + classpath 'com.novoda:bintray-release:0.2.7' } } diff --git a/library/build.gradle b/library/build.gradle index 7c66a11161..6ba2e1ad6d 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. apply plugin: 'com.android.library' +apply plugin: 'bintray-release' android { compileSdkVersion 21 @@ -47,3 +48,13 @@ android.libraryVariants.all { variant -> task.from variant.javaCompile.destinationDir artifacts.add('archives', task); } + +publish { + repoName = 'exoplayer' + userOrg = 'google' + groupId = 'com.google.android.exoplayer' + artifactId = 'exoplayer' + version = 'r1.2.3' + description = 'The ExoPlayer library.' + website = 'https://github.com/google/ExoPlayer' +} From 5a5935cb72857580803573f0d44703516d332558 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Mon, 30 Mar 2015 15:56:39 +0100 Subject: [PATCH 44/69] Fix HLS playlist parsing of boolean attributes. The regex included quotation marks like X="YES", but the manifests don't actually contain them, for examples X=YES. --- .../com/google/android/exoplayer/hls/HlsParserUtil.java | 9 +++++++-- .../google/android/exoplayer/hls/HlsPlaylistParser.java | 8 ++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsParserUtil.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsParserUtil.java index e5cbe97897..7e5dd64367 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsParserUtil.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsParserUtil.java @@ -23,9 +23,10 @@ import java.util.regex.Pattern; /** * Utility methods for HLS manifest parsing. */ -/* package */ class HlsParserUtil { +/* package */ final class HlsParserUtil { private static final String BOOLEAN_YES = "YES"; + private static final String BOOLEAN_NO = "NO"; private HlsParserUtil() {} @@ -56,7 +57,7 @@ import java.util.regex.Pattern; return null; } - public static boolean parseOptionalBoolAttr(String line, Pattern pattern) { + public static boolean parseOptionalBooleanAttr(String line, Pattern pattern) { Matcher matcher = pattern.matcher(line); if (matcher.find() && matcher.groupCount() == 1) { return BOOLEAN_YES.equals(matcher.group(1)); @@ -64,4 +65,8 @@ import java.util.regex.Pattern; return false; } + public static Pattern compileBooleanAttrPattern(String attrName) { + return Pattern.compile(attrName + "=(" + BOOLEAN_YES + "|" + BOOLEAN_NO + ")"); + } + } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java index 939e750fb3..47526ed838 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsPlaylistParser.java @@ -98,9 +98,9 @@ public final class HlsPlaylistParser implements NetworkLoadable.Parser Date: Tue, 31 Mar 2015 11:28:51 +0100 Subject: [PATCH 45/69] Enable ContentProtect elements at the Representation level --- .../exoplayer/dash/mpd/ContentProtection.java | 35 ++++- .../MediaPresentationDescriptionParser.java | 135 ++++++++++++++++-- 2 files changed, 161 insertions(+), 9 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/dash/mpd/ContentProtection.java b/library/src/main/java/com/google/android/exoplayer/dash/mpd/ContentProtection.java index c8f7cfb501..8f02fdc6f4 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/mpd/ContentProtection.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/mpd/ContentProtection.java @@ -15,6 +15,10 @@ */ package com.google.android.exoplayer.dash.mpd; +import com.google.android.exoplayer.util.Assertions; +import com.google.android.exoplayer.util.Util; + +import java.util.Arrays; import java.util.UUID; /** @@ -43,9 +47,38 @@ public class ContentProtection { * @param data Protection scheme specific initialization data. May be null. */ public ContentProtection(String schemeUriId, UUID uuid, byte[] data) { - this.schemeUriId = schemeUriId; + this.schemeUriId = Assertions.checkNotNull(schemeUriId); this.uuid = uuid; this.data = data; } + @Override + public boolean equals(Object obj) { + if (!(obj instanceof ContentProtection)) { + return false; + } + if (obj == this) { + return true; + } + + ContentProtection other = (ContentProtection) obj; + return schemeUriId.equals(other.schemeUriId) + && Util.areEqual(uuid, other.uuid) + && Arrays.equals(data, other.data); + } + + @Override + public int hashCode() { + int hashCode = 1; + + hashCode = hashCode * 37 + schemeUriId.hashCode(); + if (uuid != null) { + hashCode = hashCode * 37 + uuid.hashCode(); + } + if (data != null) { + hashCode = hashCode * 37 + Arrays.hashCode(data); + } + return hashCode; + } + } diff --git a/library/src/main/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParser.java b/library/src/main/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParser.java index 86722c0020..7767fa8810 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParser.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParser.java @@ -38,6 +38,8 @@ import java.io.IOException; import java.io.InputStream; import java.text.ParseException; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; /** @@ -178,24 +180,22 @@ public class MediaPresentationDescriptionParser extends DefaultHandler int contentType = parseAdaptationSetTypeFromMimeType(mimeType); int id = -1; - List contentProtections = null; + ContentProtectionsBuilder contentProtectionsBuilder = new ContentProtectionsBuilder(); List representations = new ArrayList(); do { xpp.next(); if (isStartTag(xpp, "BaseURL")) { baseUrl = parseBaseUrl(xpp, baseUrl); } else if (isStartTag(xpp, "ContentProtection")) { - if (contentProtections == null) { - contentProtections = new ArrayList(); - } - contentProtections.add(parseContentProtection(xpp)); + contentProtectionsBuilder.addAdaptationSetProtection(parseContentProtection(xpp)); } else if (isStartTag(xpp, "ContentComponent")) { id = Integer.parseInt(xpp.getAttributeValue(null, "id")); contentType = checkAdaptationSetTypeConsistency(contentType, parseAdaptationSetType(xpp.getAttributeValue(null, "contentType"))); } else if (isStartTag(xpp, "Representation")) { Representation representation = parseRepresentation(xpp, baseUrl, periodStartMs, - periodDurationMs, mimeType, language, segmentBase); + periodDurationMs, mimeType, language, segmentBase, contentProtectionsBuilder); + contentProtectionsBuilder.endRepresentation(); contentType = checkAdaptationSetTypeConsistency(contentType, parseAdaptationSetTypeFromMimeType(representation.format.mimeType)); representations.add(representation); @@ -211,7 +211,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler } } while (!isEndTag(xpp, "AdaptationSet")); - return buildAdaptationSet(id, contentType, representations, contentProtections); + return buildAdaptationSet(id, contentType, representations, contentProtectionsBuilder.build()); } protected AdaptationSet buildAdaptationSet(int id, int contentType, @@ -289,7 +289,8 @@ public class MediaPresentationDescriptionParser extends DefaultHandler protected Representation parseRepresentation(XmlPullParser xpp, String baseUrl, long periodStartMs, long periodDurationMs, String mimeType, String language, - SegmentBase segmentBase) throws XmlPullParserException, IOException { + SegmentBase segmentBase, ContentProtectionsBuilder contentProtectionsBuilder) + throws XmlPullParserException, IOException { String id = xpp.getAttributeValue(null, "id"); int bandwidth = parseInt(xpp, "bandwidth"); int audioSamplingRate = parseInt(xpp, "audioSamplingRate"); @@ -312,6 +313,8 @@ public class MediaPresentationDescriptionParser extends DefaultHandler } else if (isStartTag(xpp, "SegmentTemplate")) { segmentBase = parseSegmentTemplate(xpp, baseUrl, (SegmentTemplate) segmentBase, periodDurationMs); + } else if (isStartTag(xpp, "ContentProtection")) { + contentProtectionsBuilder.addRepresentationProtection(parseContentProtection(xpp)); } } while (!isEndTag(xpp, "Representation")); @@ -577,4 +580,120 @@ public class MediaPresentationDescriptionParser extends DefaultHandler return value == null ? defaultValue : value; } + /** + * Builds a list of {@link ContentProtection} elements for an {@link AdaptationSet}. + *

+ * If child Representation elements contain ContentProtection elements, then it is required that + * they all define the same ones. If they do, the ContentProtection elements are bubbled up to the + * AdaptationSet. Child Representation elements defining different ContentProtection elements is + * considered an error. + */ + protected static final class ContentProtectionsBuilder implements Comparator { + + private ArrayList adaptationSetProtections; + private ArrayList representationProtections; + private ArrayList currentRepresentationProtections; + + private boolean representationProtectionsSet; + + /** + * Adds a {@link ContentProtection} found in the AdaptationSet element. + * + * @param contentProtection The {@link ContentProtection} to add. + */ + public void addAdaptationSetProtection(ContentProtection contentProtection) { + if (adaptationSetProtections == null) { + adaptationSetProtections = new ArrayList(); + } + maybeAddContentProtection(adaptationSetProtections, contentProtection); + } + + /** + * Adds a {@link ContentProtection} found in a child Representation element. + * + * @param contentProtection The {@link ContentProtection} to add. + */ + public void addRepresentationProtection(ContentProtection contentProtection) { + if (currentRepresentationProtections == null) { + currentRepresentationProtections = new ArrayList(); + } + maybeAddContentProtection(currentRepresentationProtections, contentProtection); + } + + /** + * Should be invoked after processing each child Representation element, in order to apply + * consistency checks. + */ + public void endRepresentation() { + if (!representationProtectionsSet) { + if (currentRepresentationProtections != null) { + Collections.sort(currentRepresentationProtections, this); + } + representationProtections = currentRepresentationProtections; + representationProtectionsSet = true; + } else { + // Assert that each Representation element defines the same ContentProtection elements. + if (currentRepresentationProtections == null) { + Assertions.checkState(representationProtections == null); + } else { + Collections.sort(currentRepresentationProtections, this); + Assertions.checkState(currentRepresentationProtections.equals(representationProtections)); + } + } + currentRepresentationProtections = null; + } + + /** + * Returns the final list of consistent {@link ContentProtection} elements. + */ + public ArrayList build() { + if (adaptationSetProtections == null) { + return representationProtections; + } else if (representationProtections == null) { + return adaptationSetProtections; + } else { + // Bubble up ContentProtection elements found in the child Representation elements. + for (int i = 0; i < representationProtections.size(); i++) { + maybeAddContentProtection(adaptationSetProtections, representationProtections.get(i)); + } + return adaptationSetProtections; + } + } + + /** + * Checks a ContentProtection for consistency with the given list, adding it if necessary. + *

    + *
  • If the new ContentProtection matches another in the list, it's consistent and is not + * added to the list. + *
  • If the new ContentProtection has the same schemeUriId as another ContentProtection in the + * list, but its other attributes do not match, then it's inconsistent and an + * {@link IllegalStateException} is thrown. + *
  • Else the new ContentProtection has a unique schemeUriId, it's consistent and is added. + *
+ * + * @param contentProtections The list of ContentProtection elements currently known. + * @param contentProtection The ContentProtection to add. + */ + private void maybeAddContentProtection(List contentProtections, + ContentProtection contentProtection) { + if (!contentProtections.contains(contentProtection)) { + for (int i = 0; i < contentProtections.size(); i++) { + // If contains returned false (no complete match), but find a matching schemeUriId, then + // the MPD contains inconsistent ContentProtection data. + Assertions.checkState( + !contentProtections.get(i).schemeUriId.equals(contentProtection.schemeUriId)); + } + contentProtections.add(contentProtection); + } + } + + // Comparator implementation. + + @Override + public int compare(ContentProtection first, ContentProtection second) { + return first.schemeUriId.compareTo(second.schemeUriId); + } + + } + } From 1a198b8a300b87784d7a283894a9d2662f6dbe7c Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 22:24:39 +0100 Subject: [PATCH 46/69] Minor cleanup (remove deprecated method, fix javadoc) --- .../com/google/android/exoplayer/ExoPlayer.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/ExoPlayer.java b/library/src/main/java/com/google/android/exoplayer/ExoPlayer.java index a5bc989a40..b6ec3c12d1 100644 --- a/library/src/main/java/com/google/android/exoplayer/ExoPlayer.java +++ b/library/src/main/java/com/google/android/exoplayer/ExoPlayer.java @@ -141,14 +141,6 @@ public interface ExoPlayer { return new ExoPlayerImpl(rendererCount, DEFAULT_MIN_BUFFER_MS, DEFAULT_MIN_REBUFFER_MS); } - /** - * @deprecated Please use {@link #newInstance(int, int, int)}. - */ - @Deprecated - public static ExoPlayer newInstance(int rendererCount, int minRebufferMs) { - return new ExoPlayerImpl(rendererCount, DEFAULT_MIN_BUFFER_MS, minRebufferMs); - } - } /** @@ -160,7 +152,8 @@ public interface ExoPlayer { * {@link ExoPlayer#getPlaybackState()} changes. * * @param playWhenReady Whether playback will proceed when ready. - * @param playbackState One of the {@code STATE} constants defined in this class. + * @param playbackState One of the {@code STATE} constants defined in the {@link ExoPlayer} + * interface. */ void onPlayerStateChanged(boolean playWhenReady, int playbackState); /** @@ -256,7 +249,7 @@ public interface ExoPlayer { /** * Returns the current state of the player. * - * @return One of the {@code STATE} constants defined in this class. + * @return One of the {@code STATE} constants defined in this interface. */ public int getPlaybackState(); From 362dc5f382e3a87f04fed017248e225eeb416396 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 22:26:00 +0100 Subject: [PATCH 47/69] Don't fail if server doesn't support partial requests. Some servers, probably edge cache machines that exclusively serve chunked media, don't support partial requests. Which is kind of vaguely reasonable for that particular case. This change modifies DefaultHttpDataSource to correctly handle this case, by manually skipping data up to the requested position (and making sure not to read more data than the requested length). --- .../upstream/DefaultHttpDataSource.java | 159 +++++++++++++----- 1 file changed, 120 insertions(+), 39 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java index 259ffb6214..49a00fa400 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java @@ -23,13 +23,16 @@ import com.google.android.exoplayer.util.Util; import android.text.TextUtils; import android.util.Log; +import java.io.EOFException; import java.io.IOException; import java.io.InputStream; +import java.io.InterruptedIOException; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -44,6 +47,7 @@ public class DefaultHttpDataSource implements HttpDataSource { private static final String TAG = "HttpDataSource"; private static final Pattern CONTENT_RANGE_HEADER = Pattern.compile("^bytes (\\d+)-(\\d+)/(\\d+)$"); + private static final AtomicReference skipBufferReference = new AtomicReference(); private final int connectTimeoutMillis; private final int readTimeoutMillis; @@ -57,7 +61,10 @@ public class DefaultHttpDataSource implements HttpDataSource { private InputStream inputStream; private boolean opened; - private long dataLength; + private long bytesToSkip; + private long bytesToRead; + + private long bytesSkipped; private long bytesRead; /** @@ -137,6 +144,7 @@ public class DefaultHttpDataSource implements HttpDataSource { public long open(DataSpec dataSpec) throws HttpDataSourceException { this.dataSpec = dataSpec; this.bytesRead = 0; + this.bytesSkipped = 0; try { connection = makeConnection(dataSpec); } catch (IOException e) { @@ -144,14 +152,16 @@ public class DefaultHttpDataSource implements HttpDataSource { dataSpec); } - // Check for a valid response code. int responseCode; try { responseCode = connection.getResponseCode(); } catch (IOException e) { + closeConnection(); throw new HttpDataSourceException("Unable to connect to " + dataSpec.uri.toString(), e, dataSpec); } + + // Check for a valid response code. if (responseCode < 200 || responseCode > 299) { Map> headers = connection.getHeaderFields(); closeConnection(); @@ -165,23 +175,23 @@ public class DefaultHttpDataSource implements HttpDataSource { throw new InvalidContentTypeException(contentType, dataSpec); } + // If we requested a range starting from a non-zero position and received a 200 rather than a + // 206, then the server does not support partial requests. We'll need to manually skip to the + // requested position. + bytesToSkip = responseCode == 200 && dataSpec.position != 0 ? dataSpec.position : 0; + + // Determine the length of the data to be read, after skipping. if ((dataSpec.flags & DataSpec.FLAG_ALLOW_GZIP) == 0) { long contentLength = getContentLength(connection); - dataLength = dataSpec.length == C.LENGTH_UNBOUNDED ? contentLength : dataSpec.length; - if (dataSpec.length != C.LENGTH_UNBOUNDED && contentLength != C.LENGTH_UNBOUNDED - && contentLength != dataSpec.length) { - // The DataSpec specified a length and we resolved a length from the response headers, but - // the two lengths do not match. - closeConnection(); - throw new HttpDataSourceException( - new UnexpectedLengthException(dataSpec.length, contentLength), dataSpec); - } + bytesToRead = dataSpec.length != C.LENGTH_UNBOUNDED ? dataSpec.length + : contentLength != C.LENGTH_UNBOUNDED ? contentLength - bytesToSkip + : C.LENGTH_UNBOUNDED; } else { // Gzip is enabled. If the server opts to use gzip then the content length in the response // will be that of the compressed data, which isn't what we want. Furthermore, there isn't a - // reliable way to determine whether the gzip was used or not. Hence we always treat the - // length as unknown. - dataLength = C.LENGTH_UNBOUNDED; + // reliable way to determine whether the gzip was used or not. Always use the dataSpec length + // in this case. + bytesToRead = dataSpec.length; } try { @@ -196,31 +206,17 @@ public class DefaultHttpDataSource implements HttpDataSource { listener.onTransferStart(); } - return dataLength; + return bytesToRead; } @Override public int read(byte[] buffer, int offset, int readLength) throws HttpDataSourceException { - int read = 0; try { - read = inputStream.read(buffer, offset, readLength); + skipInternal(); + return readInternal(buffer, offset, readLength); } catch (IOException e) { throw new HttpDataSourceException(e, dataSpec); } - - if (read > 0) { - bytesRead += read; - if (listener != null) { - listener.onBytesTransferred(read); - } - } else if (dataLength != C.LENGTH_UNBOUNDED && dataLength != bytesRead) { - // Check for cases where the server closed the connection having not sent the correct amount - // of data. We can only do this if we know the length of the data we were expecting. - throw new HttpDataSourceException(new UnexpectedLengthException(dataLength, bytesRead), - dataSpec); - } - - return read; } @Override @@ -246,13 +242,6 @@ public class DefaultHttpDataSource implements HttpDataSource { } } - private void closeConnection() { - if (connection != null) { - connection.disconnect(); - connection = null; - } - } - /** * Returns the current connection, or null if the source is not currently opened. * @@ -262,6 +251,16 @@ public class DefaultHttpDataSource implements HttpDataSource { return connection; } + /** + * Returns the number of bytes that have been skipped since the most recent call to + * {@link #open(DataSpec)}. + * + * @return The number of bytes skipped. + */ + protected final long bytesSkipped() { + return bytesSkipped; + } + /** * Returns the number of bytes that have been read since the most recent call to * {@link #open(DataSpec)}. @@ -281,7 +280,7 @@ public class DefaultHttpDataSource implements HttpDataSource { * @return The remaining length, or {@link C#LENGTH_UNBOUNDED}. */ protected final long bytesRemaining() { - return dataLength == C.LENGTH_UNBOUNDED ? dataLength : dataLength - bytesRead; + return bytesToRead == C.LENGTH_UNBOUNDED ? bytesToRead : bytesToRead - bytesRead; } private HttpURLConnection makeConnection(DataSpec dataSpec) throws IOException { @@ -354,4 +353,86 @@ public class DefaultHttpDataSource implements HttpDataSource { return contentLength; } + /** + * Skips any bytes that need skipping. Else does nothing. + *

+ * This implementation is based roughly on {@code libcore.io.Streams.skipByReading()}. + * + * @throws InterruptedIOException If the thread is interrupted during the operation. + * @throws EOFException If the end of the input stream is reached before the bytes are skipped. + */ + private void skipInternal() throws IOException { + if (bytesSkipped == bytesToSkip) { + return; + } + + // Acquire the shared skip buffer. + byte[] skipBuffer = skipBufferReference.getAndSet(null); + if (skipBuffer == null) { + skipBuffer = new byte[4096]; + } + + while (bytesSkipped != bytesToSkip) { + int readLength = (int) Math.min(bytesToSkip - bytesSkipped, skipBuffer.length); + int read = inputStream.read(skipBuffer, 0, readLength); + if (Thread.interrupted()) { + throw new InterruptedIOException(); + } + if (read == -1) { + throw new EOFException(); + } + bytesSkipped += read; + if (listener != null) { + listener.onBytesTransferred(read); + } + } + + // Release the shared skip buffer. + skipBufferReference.set(skipBuffer); + } + + /** + * Reads up to {@code length} bytes of data and stores them into {@code buffer}, starting at + * index {@code offset}. + *

+ * This method blocks until at least one byte of data can be read, the end of the opened range is + * detected, or an exception is thrown. + * + * @param buffer The buffer into which the read data should be stored. + * @param offset The start offset into {@code buffer} at which data should be written. + * @param readLength The maximum number of bytes to read. + * @return The number of bytes read, or -1 if the end of the opened range is reached. + * @throws IOException If an error occurs reading from the source. + */ + private int readInternal(byte[] buffer, int offset, int readLength) throws IOException { + readLength = bytesToRead == C.LENGTH_UNBOUNDED ? readLength + : (int) Math.min(readLength, bytesToRead - bytesRead); + if (readLength == 0) { + // We've read all of the requested data. + return -1; + } + + int read = inputStream.read(buffer, offset, readLength); + if (read == -1) { + if (bytesToRead != C.LENGTH_UNBOUNDED && bytesToRead != bytesRead) { + // The server closed the connection having not sent sufficient data. + throw new EOFException(); + } + return -1; + } + + bytesRead += read; + if (listener != null) { + listener.onBytesTransferred(read); + } + return read; + } + + private void closeConnection() { + if (connection != null) { + connection.disconnect(); + connection = null; + } + } + } From cfcbca6c958c613f7f03dc6c4010b86801b32176 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 22:29:51 +0100 Subject: [PATCH 48/69] Make FileDataSource throw EOFException. --- .../com/google/android/exoplayer/upstream/FileDataSource.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/FileDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/FileDataSource.java index ec9a3b9ade..42431d4739 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/FileDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/FileDataSource.java @@ -17,6 +17,7 @@ package com.google.android.exoplayer.upstream; import com.google.android.exoplayer.C; +import java.io.EOFException; import java.io.IOException; import java.io.RandomAccessFile; @@ -65,6 +66,9 @@ public final class FileDataSource implements DataSource { file.seek(dataSpec.position); bytesRemaining = dataSpec.length == C.LENGTH_UNBOUNDED ? file.length() - dataSpec.position : dataSpec.length; + if (bytesRemaining < 0) { + throw new EOFException(); + } } catch (IOException e) { throw new FileDataSourceException(e); } From ed658b8e8d4ad839d721bc79ff4f2175a9ff5413 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 22:33:10 +0100 Subject: [PATCH 49/69] Attempt to guard against ExoCache corruption. --- .../exoplayer/upstream/TeeDataSource.java | 7 +++++-- .../upstream/cache/CacheDataSink.java | 19 ++++++++++++++++--- .../google/android/exoplayer/util/Util.java | 14 ++++++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/TeeDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/TeeDataSource.java index 2e140db6c8..2623e8ce7f 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/TeeDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/TeeDataSource.java @@ -61,8 +61,11 @@ public final class TeeDataSource implements DataSource { @Override public void close() throws IOException { - upstream.close(); - dataSink.close(); + try { + upstream.close(); + } finally { + dataSink.close(); + } } } diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSink.java b/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSink.java index 942a29f0c7..01e06b5158 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSink.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/cache/CacheDataSink.java @@ -19,6 +19,7 @@ import com.google.android.exoplayer.C; import com.google.android.exoplayer.upstream.DataSink; import com.google.android.exoplayer.upstream.DataSpec; import com.google.android.exoplayer.util.Assertions; +import com.google.android.exoplayer.util.Util; import java.io.File; import java.io.FileNotFoundException; @@ -115,11 +116,23 @@ public class CacheDataSink implements DataSink { } private void closeCurrentOutputStream() throws IOException { - if (outputStream != null) { + if (outputStream == null) { + return; + } + + boolean success = false; + try { outputStream.flush(); - outputStream.close(); + outputStream.getFD().sync(); + success = true; + } finally { + Util.closeQuietly(outputStream); + if (success) { + cache.commitFile(file); + } else { + file.delete(); + } outputStream = null; - cache.commitFile(file); file = null; } } diff --git a/library/src/main/java/com/google/android/exoplayer/util/Util.java b/library/src/main/java/com/google/android/exoplayer/util/Util.java index 8319a7ad88..6160427890 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/Util.java +++ b/library/src/main/java/com/google/android/exoplayer/util/Util.java @@ -22,6 +22,7 @@ import android.text.TextUtils; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.lang.reflect.Method; import java.math.BigDecimal; import java.net.HttpURLConnection; @@ -129,6 +130,19 @@ public final class Util { } } + /** + * Closes an {@link OutputStream}, suppressing any {@link IOException} that may occur. + * + * @param outputStream The {@link OutputStream} to close. + */ + public static void closeQuietly(OutputStream outputStream) { + try { + outputStream.close(); + } catch (IOException e) { + // Ignore. + } + } + /** * Converts text to lower case using {@link Locale#US}. * From ecaf329b0d5d425d5b12858bf291f4d6cdb3add9 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 22:34:06 +0100 Subject: [PATCH 50/69] Improve ParsableByteArray performance + enhance API. --- .../exoplayer/util/ParsableByteArray.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/util/ParsableByteArray.java b/library/src/main/java/com/google/android/exoplayer/util/ParsableByteArray.java index 72b2552722..727b310042 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/ParsableByteArray.java +++ b/library/src/main/java/com/google/android/exoplayer/util/ParsableByteArray.java @@ -37,6 +37,12 @@ public final class ParsableByteArray { limit = data.length; } + /** Creates a new instance wrapping {@code data}. */ + public ParsableByteArray(byte[] data) { + this.data = data; + limit = data.length; + } + /** * Creates a new instance that wraps an existing array. * @@ -171,6 +177,13 @@ public final class ParsableByteArray { return result; } + /** Reads the next three bytes as an unsigned value. */ + public int readUnsignedInt24() { + int result = shiftIntoInt(data, position, 3); + position += 3; + return result; + } + /** Reads the next four bytes as an unsigned value. */ public long readUnsignedInt() { long result = shiftIntoLong(data, position, 4); @@ -180,9 +193,11 @@ public final class ParsableByteArray { /** Reads the next four bytes as a signed value. */ public int readInt() { - int result = shiftIntoInt(data, position, 4); - position += 4; - return result; + // shiftIntoInt inlined as performance optimization. + return (data[position++] & 0xFF) << 24 + | (data[position++] & 0xFF) << 16 + | (data[position++] & 0xFF) << 8 + | data[position++] & 0xFF; } /** Reads the next eight bytes as a signed value. */ @@ -221,8 +236,11 @@ public final class ParsableByteArray { * @throws IllegalArgumentException Thrown if the top bit of the input data is set. */ public int readUnsignedIntToInt() { - int result = shiftIntoInt(data, position, 4); - position += 4; + // shiftIntoInt inlined as performance optimization. + final int result = (data[position++] & 0xFF) << 24 + | (data[position++] & 0xFF) << 16 + | (data[position++] & 0xFF) << 8 + | data[position++] & 0xFF; if (result < 0) { throw new IllegalArgumentException("Top bit not zero: " + result); } From 4dc8e8f951510c16928603b8ce2d91700f6e3af3 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 22:35:03 +0100 Subject: [PATCH 51/69] Add audio and m3u8 mime types. --- .../java/com/google/android/exoplayer/util/MimeTypes.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java b/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java index 11d49103e7..9dcc1638ee 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java +++ b/library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java @@ -36,6 +36,10 @@ public class MimeTypes { public static final String AUDIO_AC3 = BASE_TYPE_AUDIO + "/ac3"; public static final String AUDIO_EC3 = BASE_TYPE_AUDIO + "/eac3"; public static final String AUDIO_WEBM = BASE_TYPE_AUDIO + "/webm"; + public static final String AUDIO_MPEG = BASE_TYPE_AUDIO + "/mpeg"; + public static final String AUDIO_MPEG_L1 = BASE_TYPE_AUDIO + "/mpeg-L1"; + public static final String AUDIO_MPEG_L2 = BASE_TYPE_AUDIO + "/mpeg-L2"; + public static final String AUDIO_VORBIS = BASE_TYPE_AUDIO + "/vorbis"; public static final String AUDIO_OPUS = BASE_TYPE_AUDIO + "/opus"; @@ -44,6 +48,7 @@ public class MimeTypes { public static final String APPLICATION_ID3 = BASE_TYPE_APPLICATION + "/id3"; public static final String APPLICATION_EIA608 = BASE_TYPE_APPLICATION + "/eia-608"; public static final String APPLICATION_TTML = BASE_TYPE_APPLICATION + "/ttml+xml"; + public static final String APPLICATION_M3U8 = BASE_TYPE_APPLICATION + "/x-mpegURL"; private MimeTypes() {} From d108c13535e4f9f47b9f36bc463520a5f69105fe Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 22:36:07 +0100 Subject: [PATCH 52/69] Remove deprecated method. --- .../exoplayer/drm/StreamingDrmSessionManager.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java b/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java index 2e752ba70d..8319e2d574 100644 --- a/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java +++ b/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java @@ -80,15 +80,6 @@ public class StreamingDrmSessionManager implements DrmSessionManager { private byte[] schemePsshData; private byte[] sessionId; - /** - * @deprecated Use the other constructor, passing null as {@code optionalKeyRequestParameters}. - */ - @Deprecated - public StreamingDrmSessionManager(UUID uuid, Looper playbackLooper, MediaDrmCallback callback, - Handler eventHandler, EventListener eventListener) throws UnsupportedSchemeException { - this(uuid, playbackLooper, callback, null, eventHandler, eventListener); - } - /** * @param uuid The UUID of the drm scheme. * @param playbackLooper The looper associated with the media playback thread. Should usually be From c9010256432c8b09982b6a2c4f7fbfaa17b7c2ac Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 22:38:06 +0100 Subject: [PATCH 53/69] Don't attempt license request when keys expire. - Keys should not expire during normal playbacks of correctly configured content. - Attempting to refresh on expiration causes a race condition, that may result in either failure or brief re-buffer, for the 30s license test video. - This change provides deterministic behavior, which is to always fail. --- .../android/exoplayer/demo/Samples.java | 2 +- .../exoplayer/drm/KeysExpiredException.java | 22 +++++++++++++++++++ .../drm/StreamingDrmSessionManager.java | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 library/src/main/java/com/google/android/exoplayer/drm/KeysExpiredException.java diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java index 0aa6065c2f..d6e16785ff 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java @@ -103,7 +103,7 @@ import java.util.Locale; + "as=fmp4_audio_cenc,fmp4_sd_hd_cenc&sparams=ip,ipbits,expire,as&ip=0.0.0.0&ipbits=0" + "&expire=19000000000&signature=61611F115EEEC7BADE5536827343FFFE2D83D14F." + "2FDF4BFA502FB5865C5C86401314BDDEA4799BD0&key=ik0", DemoUtil.TYPE_DASH), - new Sample("WV: 30s license duration", "f9a34cab7b05881a", + new Sample("WV: 30s license duration (fails at ~30s)", "f9a34cab7b05881a", "http://www.youtube.com/api/manifest/dash/id/f9a34cab7b05881a/source/youtube?" + "as=fmp4_audio_cenc,fmp4_sd_hd_cenc&sparams=ip,ipbits,expire,as&ip=0.0.0.0&ipbits=0" + "&expire=19000000000&signature=88DC53943385CED8CF9F37ADD9E9843E3BF621E6." diff --git a/library/src/main/java/com/google/android/exoplayer/drm/KeysExpiredException.java b/library/src/main/java/com/google/android/exoplayer/drm/KeysExpiredException.java new file mode 100644 index 0000000000..75945a7ec1 --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/drm/KeysExpiredException.java @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.drm; + +/** + * Thrown when the drm keys loaded into an open session expire. + */ +public final class KeysExpiredException extends Exception { +} diff --git a/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java b/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java index 8319e2d574..95a91523ec 100644 --- a/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java +++ b/library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java @@ -322,7 +322,7 @@ public class StreamingDrmSessionManager implements DrmSessionManager { return; case MediaDrm.EVENT_KEY_EXPIRED: state = STATE_OPENED; - postKeyRequest(); + onError(new KeysExpiredException()); return; case MediaDrm.EVENT_PROVISION_REQUIRED: state = STATE_OPENED; From 70b0e55a8b934d2fe91e7fab62eb8604cd41c9cf Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 22:39:15 +0100 Subject: [PATCH 54/69] Remove deprecated bandwidth parameter. --- .../java/com/google/android/exoplayer/chunk/Format.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/Format.java b/library/src/main/java/com/google/android/exoplayer/chunk/Format.java index 2810dc4ff5..b5f36fa96c 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/Format.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/Format.java @@ -84,14 +84,6 @@ public class Format { */ public final String language; - /** - * The average bandwidth in bytes per second. - * - * @deprecated Use {@link #bitrate}. However note that the units of measurement are different. - */ - @Deprecated - public final int bandwidth; - /** * @param id The format identifier. * @param mimeType The format mime type. @@ -144,7 +136,6 @@ public class Format { this.bitrate = bitrate; this.language = language; this.codecs = codecs; - this.bandwidth = bitrate / 8; } @Override From d745384d9935cf2db3296bab06e12ca1ea5fe2b8 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 22:55:12 +0100 Subject: [PATCH 55/69] Change decodeOnly to be a sample flag. --- .../java/com/google/android/exoplayer/C.java | 5 ++++ .../exoplayer/MediaCodecTrackRenderer.java | 6 ++-- .../android/exoplayer/SampleHolder.java | 30 ++++++++++++++----- .../exoplayer/chunk/ChunkSampleSource.java | 3 +- .../chunk/parser/webm/WebmExtractor.java | 4 +-- .../exoplayer/hls/HlsSampleSource.java | 4 ++- .../hls/parser/RollingSampleBuffer.java | 2 +- .../exoplayer/hls/parser/SampleQueue.java | 6 ++-- .../source/FrameworkSampleExtractor.java | 3 +- .../exoplayer/text/TextTrackRenderer.java | 2 +- .../exoplayer/text/eia608/Eia608Parser.java | 2 +- .../chunk/parser/webm/WebmExtractorTest.java | 6 ++-- 12 files changed, 47 insertions(+), 26 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/C.java b/library/src/main/java/com/google/android/exoplayer/C.java index a6d60b4ef7..8ff7888ad0 100644 --- a/library/src/main/java/com/google/android/exoplayer/C.java +++ b/library/src/main/java/com/google/android/exoplayer/C.java @@ -55,6 +55,11 @@ public final class C { @SuppressWarnings("InlinedApi") public static final int SAMPLE_FLAG_ENCRYPTED = MediaExtractor.SAMPLE_FLAG_ENCRYPTED; + /** + * Indicates that a sample should be decoded but not rendered. + */ + public static final int SAMPLE_FLAG_DECODE_ONLY = 0x8000000; + /** * @see MediaCodec#CRYPTO_MODE_AES_CTR */ diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index f7402bf8e6..c46e688b87 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -604,7 +604,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { if (waitingForFirstSyncFrame) { // TODO: Find out if it's possible to supply samples prior to the first sync // frame for HE-AAC. - if ((sampleHolder.flags & C.SAMPLE_FLAG_SYNC) == 0) { + if (!sampleHolder.isSyncFrame()) { sampleHolder.data.clear(); if (codecReconfigurationState == RECONFIGURATION_STATE_QUEUE_PENDING) { // The buffer we just cleared contained reconfiguration data. We need to re-write this @@ -615,7 +615,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { } waitingForFirstSyncFrame = false; } - boolean sampleEncrypted = (sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0; + boolean sampleEncrypted = sampleHolder.isEncrypted(); waitingForKeys = shouldWaitForKeys(sampleEncrypted); if (waitingForKeys) { return false; @@ -624,7 +624,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { int bufferSize = sampleHolder.data.position(); int adaptiveReconfigurationBytes = bufferSize - sampleHolder.size; long presentationTimeUs = sampleHolder.timeUs; - if (sampleHolder.decodeOnly) { + if (sampleHolder.isDecodeOnly()) { decodeOnlyPresentationTimestamps.add(presentationTimeUs); } if (sampleEncrypted) { diff --git a/library/src/main/java/com/google/android/exoplayer/SampleHolder.java b/library/src/main/java/com/google/android/exoplayer/SampleHolder.java index d548ea163a..59873e5921 100644 --- a/library/src/main/java/com/google/android/exoplayer/SampleHolder.java +++ b/library/src/main/java/com/google/android/exoplayer/SampleHolder.java @@ -50,8 +50,8 @@ public final class SampleHolder { public int size; /** - * Flags that accompany the sample. A combination of {@link C#SAMPLE_FLAG_SYNC} and - * {@link C#SAMPLE_FLAG_ENCRYPTED} + * Flags that accompany the sample. A combination of {@link C#SAMPLE_FLAG_SYNC}, + * {@link C#SAMPLE_FLAG_ENCRYPTED} and {@link C#SAMPLE_FLAG_DECODE_ONLY}. */ public int flags; @@ -60,11 +60,6 @@ public final class SampleHolder { */ public long timeUs; - /** - * If true then the sample should be decoded, but should not be presented. - */ - public boolean decodeOnly; - private final int bufferReplacementMode; /** @@ -95,6 +90,27 @@ public final class SampleHolder { return false; } + /** + * Returns whether {@link #flags} has {@link C#SAMPLE_FLAG_ENCRYPTED} set. + */ + public boolean isEncrypted() { + return (flags & C.SAMPLE_FLAG_ENCRYPTED) != 0; + } + + /** + * Returns whether {@link #flags} has {@link C#SAMPLE_FLAG_DECODE_ONLY} set. + */ + public boolean isDecodeOnly() { + return (flags & C.SAMPLE_FLAG_DECODE_ONLY) != 0; + } + + /** + * Returns whether {@link #flags} has {@link C#SAMPLE_FLAG_SYNC} set. + */ + public boolean isSyncFrame() { + return (flags & C.SAMPLE_FLAG_SYNC) != 0; + } + /** * Clears {@link #data}. Does nothing if {@link #data} is null. */ diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java b/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java index c50f3d7168..581513b6ae 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java @@ -358,7 +358,8 @@ public class ChunkSampleSource implements SampleSource, Loader.Callback { } if (mediaChunk.read(sampleHolder)) { - sampleHolder.decodeOnly = frameAccurateSeeking && sampleHolder.timeUs < lastSeekPositionUs; + boolean decodeOnly = frameAccurateSeeking && sampleHolder.timeUs < lastSeekPositionUs; + sampleHolder.flags |= decodeOnly ? C.SAMPLE_FLAG_DECODE_ONLY : 0; onSampleRead(mediaChunk, sampleHolder); return SAMPLE_READ; } else { diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java index 73551ba4dc..f9aca0375d 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java @@ -467,8 +467,8 @@ public final class WebmExtractor implements Extractor { } long elementEndOffsetBytes = elementOffsetBytes + headerSizeBytes + contentsSizeBytes; simpleBlockTimecodeUs = clusterTimecodeUs + timecodeUs; - sampleHolder.flags = keyframe ? C.SAMPLE_FLAG_SYNC : 0; - sampleHolder.decodeOnly = invisible; + sampleHolder.flags = (keyframe ? C.SAMPLE_FLAG_SYNC : 0) + | (invisible ? C.SAMPLE_FLAG_DECODE_ONLY : 0); sampleHolder.timeUs = clusterTimecodeUs + timecodeUs; sampleHolder.size = (int) (elementEndOffsetBytes - reader.getBytesRead()); diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java index 85fb2be5cc..ed3a1c73e0 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer.hls; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.MediaFormatHolder; import com.google.android.exoplayer.SampleHolder; @@ -223,7 +224,8 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { } if (extractor.getSample(track, sampleHolder)) { - sampleHolder.decodeOnly = frameAccurateSeeking && sampleHolder.timeUs < lastSeekPositionUs; + boolean decodeOnly = frameAccurateSeeking && sampleHolder.timeUs < lastSeekPositionUs; + sampleHolder.flags |= decodeOnly ? C.SAMPLE_FLAG_DECODE_ONLY : 0; return SAMPLE_READ; } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/RollingSampleBuffer.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/RollingSampleBuffer.java index af7901f0f4..fe9eab4795 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/RollingSampleBuffer.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/RollingSampleBuffer.java @@ -97,7 +97,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; // Write the sample information into the holder and extrasHolder. infoQueue.peekSample(sampleHolder, extrasHolder); // Read encryption data if the sample is encrypted. - if ((sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0) { + if (sampleHolder.isEncrypted()) { readEncryptionData(sampleHolder, extrasHolder); } // Write the sample data into the holder. diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java index 4f78f494bb..e615567901 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer.hls.parser; -import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; @@ -128,8 +127,7 @@ public final class SampleQueue implements TrackOutput { } RollingSampleBuffer nextRollingBuffer = nextQueue.rollingBuffer; while (nextRollingBuffer.peekSample(sampleInfoHolder) - && (sampleInfoHolder.timeUs < firstPossibleSpliceTime - || (sampleInfoHolder.flags & C.SAMPLE_FLAG_SYNC) == 0)) { + && (sampleInfoHolder.timeUs < firstPossibleSpliceTime || !sampleInfoHolder.isSyncFrame())) { // Discard samples from the next queue for as long as they are before the earliest possible // splice time, or not keyframes. nextRollingBuffer.skipSample(); @@ -152,7 +150,7 @@ public final class SampleQueue implements TrackOutput { private boolean advanceToEligibleSample() { boolean haveNext = rollingBuffer.peekSample(sampleInfoHolder); if (needKeyframe) { - while (haveNext && (sampleInfoHolder.flags & C.SAMPLE_FLAG_SYNC) == 0) { + while (haveNext && !sampleInfoHolder.isSyncFrame()) { rollingBuffer.skipSample(); haveNext = rollingBuffer.peekSample(sampleInfoHolder); } diff --git a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java index f8cc132ef2..c89f37de5f 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer.source; -import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.SampleSource; @@ -164,7 +163,7 @@ public final class FrameworkSampleExtractor implements SampleExtractor { } sampleHolder.timeUs = mediaExtractor.getSampleTime(); sampleHolder.flags = mediaExtractor.getSampleFlags(); - if ((sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0) { + if (sampleHolder.isEncrypted()) { sampleHolder.cryptoInfo.setFromExtractorV16(mediaExtractor); } diff --git a/library/src/main/java/com/google/android/exoplayer/text/TextTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/text/TextTrackRenderer.java index e2452102d1..52af1c9c45 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/TextTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/text/TextTrackRenderer.java @@ -179,7 +179,7 @@ public class TextTrackRenderer extends TrackRenderer implements Callback { SampleHolder sampleHolder = parserHelper.getSampleHolder(); sampleHolder.clearData(); int result = source.readData(trackIndex, positionUs, formatHolder, sampleHolder, false); - if (result == SampleSource.SAMPLE_READ && !sampleHolder.decodeOnly) { + if (result == SampleSource.SAMPLE_READ && !sampleHolder.isDecodeOnly()) { parserHelper.startParseOperation(); textRendererNeedsUpdate = false; } else if (result == SampleSource.END_OF_STREAM) { diff --git a/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java b/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java index ddc29dbd59..4beede6eed 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java +++ b/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java @@ -200,7 +200,7 @@ public class Eia608Parser { ClosedCaption[] captionArray = new ClosedCaption[captions.size()]; captions.toArray(captionArray); - return new ClosedCaptionList(sampleHolder.timeUs, sampleHolder.decodeOnly, captionArray); + return new ClosedCaptionList(sampleHolder.timeUs, sampleHolder.isDecodeOnly(), captionArray); } private static char getChar(byte ccData) { diff --git a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java index 5e43a4cb7f..4a916a50f5 100644 --- a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java +++ b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java @@ -358,9 +358,9 @@ public class WebmExtractorTest extends InstrumentationTestCase { assertTrue(Arrays.equals( mediaSegment.videoBytes, Arrays.copyOf(sampleHolder.data.array(), sampleHolder.size))); assertEquals(timeUs, sampleHolder.timeUs); - assertEquals(keyframe, (sampleHolder.flags & C.SAMPLE_FLAG_SYNC) != 0); - assertEquals(invisible, sampleHolder.decodeOnly); - assertEquals(encrypted, (sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0); + assertEquals(keyframe, sampleHolder.isSyncFrame()); + assertEquals(invisible, sampleHolder.isDecodeOnly()); + assertEquals(encrypted, sampleHolder.isEncrypted()); if (encrypted) { android.test.MoreAsserts.assertEquals(TEST_INITIALIZATION_VECTOR, sampleHolder.cryptoInfo.iv); assertEquals(C.CRYPTO_MODE_AES_CTR, sampleHolder.cryptoInfo.mode); From 608d685b2c91aa5b777bd56ccf44705db80b6e6f Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 22:56:13 +0100 Subject: [PATCH 56/69] Add missing header. --- .../java/com/google/android/exoplayer/CTest.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/library/src/test/java/com/google/android/exoplayer/CTest.java b/library/src/test/java/com/google/android/exoplayer/CTest.java index ab5157eb4a..3aa97464a3 100644 --- a/library/src/test/java/com/google/android/exoplayer/CTest.java +++ b/library/src/test/java/com/google/android/exoplayer/CTest.java @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.google.android.exoplayer; import android.annotation.SuppressLint; From a085d2f29b24f3d6ae85fcd10d654c723eac32af Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 23:00:23 +0100 Subject: [PATCH 57/69] Add END_OF_INPUT constant + start using it. --- .../src/main/java/com/google/android/exoplayer/C.java | 11 ++++++++--- .../google/android/exoplayer/upstream/DataSource.java | 3 ++- .../exoplayer/upstream/DefaultHttpDataSource.java | 7 ++++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/C.java b/library/src/main/java/com/google/android/exoplayer/C.java index 8ff7888ad0..0c43fd50d0 100644 --- a/library/src/main/java/com/google/android/exoplayer/C.java +++ b/library/src/main/java/com/google/android/exoplayer/C.java @@ -43,6 +43,12 @@ public final class C { */ public static final String UTF8_NAME = "UTF-8"; + /** + * @see MediaCodec#CRYPTO_MODE_AES_CTR + */ + @SuppressWarnings("InlinedApi") + public static final int CRYPTO_MODE_AES_CTR = MediaCodec.CRYPTO_MODE_AES_CTR; + /** * @see MediaExtractor#SAMPLE_FLAG_SYNC */ @@ -61,10 +67,9 @@ public final class C { public static final int SAMPLE_FLAG_DECODE_ONLY = 0x8000000; /** - * @see MediaCodec#CRYPTO_MODE_AES_CTR + * A return value for methods where the end of an input was encountered. */ - @SuppressWarnings("InlinedApi") - public static final int CRYPTO_MODE_AES_CTR = MediaCodec.CRYPTO_MODE_AES_CTR; + public static final int RESULT_END_OF_INPUT = -1; private C() {} diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/DataSource.java index 21f3488f7f..3d711708ee 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DataSource.java @@ -63,7 +63,8 @@ public interface DataSource { * @param buffer The buffer into which the read data should be stored. * @param offset The start offset into {@code buffer} at which data should be written. * @param readLength The maximum number of bytes to read. - * @return The number of bytes read, or -1 if the end of the opened range is reached. + * @return The number of bytes read, or {@link C#RESULT_END_OF_INPUT} if the end of the opened + * range is reached. * @throws IOException If an error occurs reading from the source. */ public int read(byte[] buffer, int offset, int readLength) throws IOException; diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java index 49a00fa400..d809b28110 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/DefaultHttpDataSource.java @@ -401,7 +401,8 @@ public class DefaultHttpDataSource implements HttpDataSource { * @param buffer The buffer into which the read data should be stored. * @param offset The start offset into {@code buffer} at which data should be written. * @param readLength The maximum number of bytes to read. - * @return The number of bytes read, or -1 if the end of the opened range is reached. + * @return The number of bytes read, or {@link C#RESULT_END_OF_INPUT} if the end of the opened + * range is reached. * @throws IOException If an error occurs reading from the source. */ private int readInternal(byte[] buffer, int offset, int readLength) throws IOException { @@ -409,7 +410,7 @@ public class DefaultHttpDataSource implements HttpDataSource { : (int) Math.min(readLength, bytesToRead - bytesRead); if (readLength == 0) { // We've read all of the requested data. - return -1; + return C.RESULT_END_OF_INPUT; } int read = inputStream.read(buffer, offset, readLength); @@ -418,7 +419,7 @@ public class DefaultHttpDataSource implements HttpDataSource { // The server closed the connection having not sent sufficient data. throw new EOFException(); } - return -1; + return C.RESULT_END_OF_INPUT; } bytesRead += read; From 380c427fb3ac73c339f4d054394ed55c8130b826 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 23:01:09 +0100 Subject: [PATCH 58/69] Make MediaCodecVideoTrackRenderer easier to extend. --- .../MediaCodecVideoTrackRenderer.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java index 685b32eff3..fbf3e1500c 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java @@ -373,6 +373,13 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { : holder.format.pixelWidthHeightRatio; } + /** + * @return True if the first frame has been rendered (playback has not necessarily begun). + */ + protected final boolean haveRenderedFirstFrame() { + return renderedFirstFrame; + } + @Override protected void onOutputFormatChanged(android.media.MediaFormat format) { boolean hasCrop = format.containsKey(KEY_CROP_RIGHT) && format.containsKey(KEY_CROP_LEFT) @@ -427,7 +434,6 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { if (!renderedFirstFrame) { renderOutputBufferImmediate(codec, bufferIndex); - renderedFirstFrame = true; return true; } @@ -463,14 +469,14 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { return false; } - private void skipOutputBuffer(MediaCodec codec, int bufferIndex) { + protected void skipOutputBuffer(MediaCodec codec, int bufferIndex) { TraceUtil.beginSection("skipVideoBuffer"); codec.releaseOutputBuffer(bufferIndex, false); TraceUtil.endSection(); codecCounters.skippedOutputBufferCount++; } - private void dropOutputBuffer(MediaCodec codec, int bufferIndex) { + protected void dropOutputBuffer(MediaCodec codec, int bufferIndex) { TraceUtil.beginSection("dropVideoBuffer"); codec.releaseOutputBuffer(bufferIndex, false); TraceUtil.endSection(); @@ -481,22 +487,24 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer { } } - private void renderOutputBufferImmediate(MediaCodec codec, int bufferIndex) { + protected void renderOutputBufferImmediate(MediaCodec codec, int bufferIndex) { maybeNotifyVideoSizeChanged(); TraceUtil.beginSection("renderVideoBufferImmediate"); codec.releaseOutputBuffer(bufferIndex, true); TraceUtil.endSection(); codecCounters.renderedOutputBufferCount++; + renderedFirstFrame = true; maybeNotifyDrawnToSurface(); } @TargetApi(21) - private void renderOutputBufferTimedV21(MediaCodec codec, int bufferIndex, long releaseTimeNs) { + protected void renderOutputBufferTimedV21(MediaCodec codec, int bufferIndex, long releaseTimeNs) { maybeNotifyVideoSizeChanged(); TraceUtil.beginSection("releaseOutputBufferTimed"); codec.releaseOutputBuffer(bufferIndex, releaseTimeNs); TraceUtil.endSection(); codecCounters.renderedOutputBufferCount++; + renderedFirstFrame = true; maybeNotifyDrawnToSurface(); } From a17123c49b02c62512c854709a36a59de2f0612d Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 23:03:50 +0100 Subject: [PATCH 59/69] Clean up codec reinitialization. --- .../exoplayer/MediaCodecTrackRenderer.java | 64 ++++++++++--------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index c46e688b87..2f7a72ee7b 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -150,18 +150,21 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { private static final int RECONFIGURATION_STATE_QUEUE_PENDING = 2; /** - * No reinit is needed + * The codec does not need to be re-initialized. */ - private static final int REINIT_STATE_NONE = 0; + private static final int REINITIALIZATION_STATE_NONE = 0; /** - * The input format has just changed. Signal an end of stream to the codec so that we can - * retrieve the very last decoded samples from the previous format. + * The input format has changed in a way that requires the codec to be re-initialized, but we + * haven't yet signaled an end of stream to the existing codec. We need to do so in order to + * ensure that it outputs any remaining buffers before we release it. */ - private static final int REINIT_STATE_SIGNAL_END_OF_STREAM = 1; + private static final int REINITIALIZATION_STATE_SIGNAL_END_OF_STREAM = 1; /** - * The end of stream has been sent, wait for the codec to acknowledge it. + * The input format has changed in a way that requires the codec to be re-initialized, and we've + * signaled an end of stream to the existing codec. We're waiting for the codec to output an end + * of stream signal to indicate that it has output any remaining buffers before we release it. */ - private static final int REINIT_STATE_WAIT_END_OF_STREAM = 2; + private static final int REINITIALIZATION_STATE_WAIT_END_OF_STREAM = 2; public final CodecCounters codecCounters; @@ -187,7 +190,8 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { private boolean openedDrmSession; private boolean codecReconfigured; private int codecReconfigurationState; - private int codecReinitState; + private int codecReinitializationState; + private boolean codecHasQueuedBuffers; private int trackIndex; private int sourceState; @@ -195,7 +199,6 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { private boolean outputStreamEnded; private boolean waitingForKeys; private boolean waitingForFirstSyncFrame; - private boolean hasQueuedInputBuffer; private long currentPositionUs; /** @@ -224,7 +227,8 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { formatHolder = new MediaFormatHolder(); decodeOnlyPresentationTimestamps = new ArrayList(); outputBufferInfo = new MediaCodec.BufferInfo(); - codecReinitState = REINIT_STATE_NONE; + codecReconfigurationState = RECONFIGURATION_STATE_NONE; + codecReinitializationState = REINITIALIZATION_STATE_NONE; } @Override @@ -341,7 +345,6 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { inputIndex = -1; outputIndex = -1; waitingForFirstSyncFrame = true; - hasQueuedInputBuffer = false; codecCounters.codecInitCount++; } @@ -391,9 +394,10 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { inputBuffers = null; outputBuffers = null; codecReconfigured = false; + codecHasQueuedBuffers = false; codecIsAdaptive = false; codecReconfigurationState = RECONFIGURATION_STATE_NONE; - codecReinitState = REINIT_STATE_NONE; + codecReinitializationState = REINITIALIZATION_STATE_NONE; codecCounters.codecReleaseCount++; try { codec.stop(); @@ -499,10 +503,10 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { decodeOnlyPresentationTimestamps.clear(); // Workaround for framework bugs. // See [Internal: b/8347958], [Internal: b/8578467], [Internal: b/8543366]. - if (Util.SDK_INT >= 18 && codecReinitState == REINIT_STATE_NONE) { + if (Util.SDK_INT >= 18 && codecReinitializationState == REINITIALIZATION_STATE_NONE) { codec.flush(); + codecHasQueuedBuffers = false; } else { - codecReinitState = REINIT_STATE_NONE; releaseCodec(); maybeInitCodec(); } @@ -511,8 +515,6 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { // avoid this issue by sending reconfiguration data following every flush. codecReconfigurationState = RECONFIGURATION_STATE_WRITE_PENDING; } - - hasQueuedInputBuffer = false; } /** @@ -523,7 +525,10 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { * @throws ExoPlaybackException If an error occurs feeding the input buffer. */ private boolean feedInputBuffer(boolean firstFeed) throws IOException, ExoPlaybackException { - if (inputStreamEnded) { + if (inputStreamEnded + || codecReinitializationState == REINITIALIZATION_STATE_WAIT_END_OF_STREAM) { + // The input stream has ended, or we need to re-initialize the codec but are still waiting + // for the existing codec to output any final output buffers. return false; } @@ -536,13 +541,12 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { sampleHolder.data.clear(); } - if (codecReinitState == REINIT_STATE_SIGNAL_END_OF_STREAM) { + if (codecReinitializationState == REINITIALIZATION_STATE_SIGNAL_END_OF_STREAM) { + // We need to re-initialize the codec. Send an end of stream signal to the existing codec so + // that it outputs any remaining buffers before we release it. codec.queueInputBuffer(inputIndex, 0, 0, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM); inputIndex = -1; - codecReinitState = REINIT_STATE_WAIT_END_OF_STREAM; - return false; - } else if (codecReinitState == REINIT_STATE_WAIT_END_OF_STREAM) { - // we are still waiting for the last samples to be output + codecReinitializationState = REINITIALIZATION_STATE_WAIT_END_OF_STREAM; return false; } @@ -635,7 +639,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { codec.queueInputBuffer(inputIndex, 0 , bufferSize, presentationTimeUs, 0); } inputIndex = -1; - hasQueuedInputBuffer = true; + codecHasQueuedBuffers = true; codecReconfigurationState = RECONFIGURATION_STATE_NONE; } catch (CryptoException e) { notifyCryptoError(e); @@ -689,12 +693,13 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { codecReconfigured = true; codecReconfigurationState = RECONFIGURATION_STATE_WRITE_PENDING; } else { - if (!hasQueuedInputBuffer) { - // no need to signal end of stream if nothing has been queued, we can just reinit asap + if (codecHasQueuedBuffers) { + // Signal end of stream and wait for any final output buffers before re-initialization. + codecReinitializationState = REINITIALIZATION_STATE_SIGNAL_END_OF_STREAM; + } else { + // There aren't any final output buffers, so perform re-initialization immediately. releaseCodec(); maybeInitCodec(); - } else { - codecReinitState = REINIT_STATE_SIGNAL_END_OF_STREAM; } } } @@ -783,14 +788,13 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { } if ((outputBufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) { - if (codecReinitState == REINIT_STATE_WAIT_END_OF_STREAM) { - // The last sample has been processed, we can safely reinit now + if (codecReinitializationState == REINITIALIZATION_STATE_WAIT_END_OF_STREAM) { + // We're waiting to re-initialize the codec, and have now received all final output buffers. releaseCodec(); maybeInitCodec(); } else { outputStreamEnded = true; } - return false; } From 6bf52dd69c9ea253f6a536a3b197a23975bb5de0 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 23:06:57 +0100 Subject: [PATCH 60/69] Report decoder initialization information out of track renderer. --- .../android/exoplayer/demo/EventLogger.java | 6 ++++ .../exoplayer/demo/player/DemoPlayer.java | 12 ++++++++ .../exoplayer/MediaCodecTrackRenderer.java | 28 +++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/EventLogger.java b/demo/src/main/java/com/google/android/exoplayer/demo/EventLogger.java index c9ece110b1..7f4c347706 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/EventLogger.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/EventLogger.java @@ -163,6 +163,12 @@ public class EventLogger implements DemoPlayer.Listener, DemoPlayer.InfoListener printInternalError("cryptoError", e); } + @Override + public void onDecoderInitialized(String decoderName, long elapsedRealtimeMs, + long initializationDurationMs) { + Log.d(TAG, "decoderInitialized [" + getSessionTimeString() + "]"); + } + private void printInternalError(String type, Exception e) { Log.e(TAG, "internalError [" + getSessionTimeString() + ", " + type + "]", e); } diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/player/DemoPlayer.java b/demo/src/main/java/com/google/android/exoplayer/demo/player/DemoPlayer.java index 338ec5b1db..c70b0e2a2f 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/player/DemoPlayer.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/player/DemoPlayer.java @@ -129,6 +129,8 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi void onLoadStarted(int sourceId, String formatId, int trigger, boolean isInitialization, int mediaStartTimeMs, int mediaEndTimeMs, long length); void onLoadCompleted(int sourceId, long bytesLoaded); + void onDecoderInitialized(String decoderName, long elapsedRealtimeMs, + long initializationDurationMs); } /** @@ -477,6 +479,16 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi } } + @Override + public void onDecoderInitialized( + String decoderName, + long elapsedRealtimeMs, + long initializationDurationMs) { + if (infoListener != null) { + infoListener.onDecoderInitialized(decoderName, elapsedRealtimeMs, initializationDurationMs); + } + } + @Override public void onUpstreamError(int sourceId, IOException e) { if (internalErrorListener != null) { diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index 2f7a72ee7b..c7f3406582 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -59,6 +59,17 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { */ void onCryptoError(CryptoException e); + /** + * Invoked when a decoder is successfully created. + * + * @param decoderName The decoder that was configured and created. + * @param elapsedRealtimeMs {@code elapsedRealtime} timestamp of when the initialization + * finished. + * @param initializationDurationMs Amount of time taken to initialize the decoder. + */ + void onDecoderInitialized(String decoderName, long elapsedRealtimeMs, + long initializationDurationMs); + } /** @@ -332,9 +343,13 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { String decoderName = decoderInfo.name; codecIsAdaptive = decoderInfo.adaptive; try { + long codecInitializingTimestamp = SystemClock.elapsedRealtime(); codec = MediaCodec.createByCodecName(decoderName); configureCodec(codec, format.getFrameworkMediaFormatV16(), mediaCrypto); codec.start(); + long codecInitializedTimestamp = SystemClock.elapsedRealtime(); + notifyDecoderInitialized(decoderName, codecInitializedTimestamp, + codecInitializedTimestamp - codecInitializingTimestamp); inputBuffers = codec.getInputBuffers(); outputBuffers = codec.getOutputBuffers(); } catch (Exception e) { @@ -846,6 +861,19 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { } } + private void notifyDecoderInitialized(final String decoderName, + final long initializedTimestamp, final long initializationDuration) { + if (eventHandler != null && eventListener != null) { + eventHandler.post(new Runnable() { + @Override + public void run() { + eventListener.onDecoderInitialized(decoderName, initializedTimestamp, + initializationDuration); + } + }); + } + } + private int getDecodeOnlyIndex(long presentationTimeUs) { final int size = decodeOnlyPresentationTimestamps.size(); for (int i = 0; i < size; i++) { From 38efb1fc3f37a71ffa7a8fd7c6b3a2e1aafc19e9 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 23:12:47 +0100 Subject: [PATCH 61/69] Clean up Aes128DataSource. --- .../android/exoplayer/hls/HlsChunkSource.java | 2 +- .../exoplayer/upstream/Aes128DataSource.java | 20 +++++++++++-------- .../upstream/UnexpectedLengthException.java | 1 + 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index f1be4678b3..2e81dd0b2b 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -474,7 +474,7 @@ public class HlsChunkSource { System.arraycopy(ivData, offset, ivDataWithPadding, ivDataWithPadding.length - ivData.length + offset, ivData.length - offset); - encryptedDataSource = new Aes128DataSource(secretKey, ivDataWithPadding, upstreamDataSource); + encryptedDataSource = new Aes128DataSource(upstreamDataSource, secretKey, ivDataWithPadding); encryptionKeyUri = keyUri; encryptedDataSourceIv = iv; encryptedDataSourceSecretKey = secretKey; diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/Aes128DataSource.java b/library/src/main/java/com/google/android/exoplayer/upstream/Aes128DataSource.java index 938dd70ef1..2115e5b0bc 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/Aes128DataSource.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/Aes128DataSource.java @@ -34,20 +34,24 @@ import javax.crypto.spec.SecretKeySpec; /** * A {@link DataSource} that decrypts the data read from an upstream source, encrypted with AES-128 * with a 128-bit key and PKCS7 padding. - * */ public class Aes128DataSource implements DataSource { private final DataSource upstream; - private final byte[] secretKey; - private final byte[] iv; + private final byte[] encryptionKey; + private final byte[] encryptionIv; private CipherInputStream cipherInputStream; - public Aes128DataSource(byte[] secretKey, byte[] iv, DataSource upstream) { + /** + * @param upstream The upstream {@link DataSource}. + * @param encryptionKey The encryption key. + * @param encryptionIv The encryption initialization vector. + */ + public Aes128DataSource(DataSource upstream, byte[] encryptionKey, byte[] encryptionIv) { this.upstream = upstream; - this.secretKey = secretKey; - this.iv = iv; + this.encryptionKey = encryptionKey; + this.encryptionIv = encryptionIv; } @Override @@ -61,8 +65,8 @@ public class Aes128DataSource implements DataSource { throw new RuntimeException(e); } - Key cipherKey = new SecretKeySpec(secretKey, "AES"); - AlgorithmParameterSpec cipherIV = new IvParameterSpec(iv); + Key cipherKey = new SecretKeySpec(encryptionKey, "AES"); + AlgorithmParameterSpec cipherIV = new IvParameterSpec(encryptionIv); try { cipher.init(Cipher.DECRYPT_MODE, cipherKey, cipherIV); diff --git a/library/src/main/java/com/google/android/exoplayer/upstream/UnexpectedLengthException.java b/library/src/main/java/com/google/android/exoplayer/upstream/UnexpectedLengthException.java index c7bc6c303d..6c91601485 100644 --- a/library/src/main/java/com/google/android/exoplayer/upstream/UnexpectedLengthException.java +++ b/library/src/main/java/com/google/android/exoplayer/upstream/UnexpectedLengthException.java @@ -20,6 +20,7 @@ import java.io.IOException; /** * Thrown when the length of some data does not match an expected length. */ +@Deprecated public final class UnexpectedLengthException extends IOException { /** From fea2140d57e5e4d422b923790018017f5aa71ab9 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 23:15:52 +0100 Subject: [PATCH 62/69] Add ability to query size/rate support in MediaCodecUtil. --- .../android/exoplayer/MediaCodecUtil.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecUtil.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecUtil.java index f3dbc7e7d1..5dbe3c5a11 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecUtil.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecUtil.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer; +import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.Util; @@ -179,6 +180,33 @@ public class MediaCodecUtil { return capabilities.isFeatureSupported(CodecCapabilities.FEATURE_AdaptivePlayback); } + /** + * Tests whether the device advertises it can decode video of a given type at a specified + * width, height, and frame rate. + *

+ * Must not be called if the device SDK version is less than 21. + * + * @param mimeType The mime type. + * @param secure Whether the decoder is required to support secure decryption. Always pass false + * unless secure decryption really is required. + * @param width Width in pixels. + * @param height Height in pixels. + * @param frameRate Frame rate in frames per second. + * @return Whether the decoder advertises support of the given size and frame rate. + */ + @TargetApi(21) + public static boolean isSizeAndRateSupportedV21(String mimeType, boolean secure, + int width, int height, double frameRate) throws DecoderQueryException { + Assertions.checkState(Util.SDK_INT >= 21); + Pair info = getMediaCodecInfo(mimeType, secure); + if (info == null) { + return false; + } + MediaCodecInfo.VideoCapabilities videoCapabilities = info.second.getVideoCapabilities(); + return videoCapabilities != null + && videoCapabilities.areSizeAndRateSupported(width, height, frameRate); + } + /** * @param profile An AVC profile constant from {@link CodecProfileLevel}. * @param level An AVC profile level from {@link CodecProfileLevel}. From 61443b2f1266012282f282ff3e5ce06c6432f5dd Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 23:31:03 +0100 Subject: [PATCH 63/69] Relocate content of Mp4Util to more sensible locations. - Atom related stuff in Mp4Util is moved to Atom. - Remainder of Mp4Util is renamed to H264Util. --- .../parser/mp4/FragmentedMp4Extractor.java | 44 ++--- .../exoplayer/hls/parser/H264Reader.java | 6 +- .../google/android/exoplayer/mp4/Atom.java | 26 +++ .../exoplayer/mp4/CommonMp4AtomParsers.java | 55 +++--- .../exoplayer/mp4/Mp4TrackSampleTable.java | 11 +- .../exoplayer/source/Mp4SampleExtractor.java | 59 ++++--- .../{mp4/Mp4Util.java => util/H264Util.java} | 163 +++++------------- .../H264UtilTest.java} | 42 ++--- 8 files changed, 179 insertions(+), 227 deletions(-) rename library/src/main/java/com/google/android/exoplayer/{mp4/Mp4Util.java => util/H264Util.java} (55%) rename library/src/test/java/com/google/android/exoplayer/{mp4/Mp4UtilTest.java => util/H264UtilTest.java} (75%) diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java index 23fffe997a..42de648051 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java @@ -26,9 +26,9 @@ import com.google.android.exoplayer.mp4.Atom; import com.google.android.exoplayer.mp4.Atom.ContainerAtom; import com.google.android.exoplayer.mp4.Atom.LeafAtom; import com.google.android.exoplayer.mp4.CommonMp4AtomParsers; -import com.google.android.exoplayer.mp4.Mp4Util; import com.google.android.exoplayer.mp4.Track; import com.google.android.exoplayer.upstream.NonBlockingInputStream; +import com.google.android.exoplayer.util.H264Util; import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableByteArray; import com.google.android.exoplayer.util.Util; @@ -157,7 +157,7 @@ public final class FragmentedMp4Extractor implements Extractor { public FragmentedMp4Extractor(int workaroundFlags) { this.workaroundFlags = workaroundFlags; parserState = STATE_READING_ATOM_HEADER; - atomHeader = new ParsableByteArray(Mp4Util.ATOM_HEADER_SIZE); + atomHeader = new ParsableByteArray(Atom.ATOM_HEADER_SIZE); extendedTypeScratch = new byte[16]; containerAtoms = new Stack(); fragmentRun = new TrackFragment(); @@ -259,14 +259,14 @@ public final class FragmentedMp4Extractor implements Extractor { } private int readAtomHeader(NonBlockingInputStream inputStream) { - int remainingBytes = Mp4Util.ATOM_HEADER_SIZE - atomBytesRead; + int remainingBytes = Atom.ATOM_HEADER_SIZE - atomBytesRead; int bytesRead = inputStream.read(atomHeader.data, atomBytesRead, remainingBytes); if (bytesRead == -1) { return RESULT_END_OF_STREAM; } rootAtomBytesRead += bytesRead; atomBytesRead += bytesRead; - if (atomBytesRead != Mp4Util.ATOM_HEADER_SIZE) { + if (atomBytesRead != Atom.ATOM_HEADER_SIZE) { return RESULT_NEED_MORE_DATA; } @@ -288,10 +288,10 @@ public final class FragmentedMp4Extractor implements Extractor { if (CONTAINER_TYPES.contains(atomTypeInteger)) { enterState(STATE_READING_ATOM_HEADER); containerAtoms.add(new ContainerAtom(atomType, - rootAtomBytesRead + atomSize - Mp4Util.ATOM_HEADER_SIZE)); + rootAtomBytesRead + atomSize - Atom.ATOM_HEADER_SIZE)); } else { atomData = new ParsableByteArray(atomSize); - System.arraycopy(atomHeader.data, 0, atomData.data, 0, Mp4Util.ATOM_HEADER_SIZE); + System.arraycopy(atomHeader.data, 0, atomData.data, 0, Atom.ATOM_HEADER_SIZE); enterState(STATE_READING_ATOM_PAYLOAD); } } else { @@ -360,7 +360,7 @@ public final class FragmentedMp4Extractor implements Extractor { LeafAtom child = moovChildren.get(i); if (child.type == Atom.TYPE_pssh) { ParsableByteArray psshAtom = child.data; - psshAtom.setPosition(Mp4Util.FULL_ATOM_HEADER_SIZE); + psshAtom.setPosition(Atom.FULL_ATOM_HEADER_SIZE); UUID uuid = new UUID(psshAtom.readLong(), psshAtom.readLong()); int dataSize = psshAtom.readInt(); byte[] data = new byte[dataSize]; @@ -399,7 +399,7 @@ public final class FragmentedMp4Extractor implements Extractor { * Parses a trex atom (defined in 14496-12). */ private static DefaultSampleValues parseTrex(ParsableByteArray trex) { - trex.setPosition(Mp4Util.FULL_ATOM_HEADER_SIZE + 4); + trex.setPosition(Atom.FULL_ATOM_HEADER_SIZE + 4); int defaultSampleDescriptionIndex = trex.readUnsignedIntToInt() - 1; int defaultSampleDuration = trex.readUnsignedIntToInt(); int defaultSampleSize = trex.readUnsignedIntToInt(); @@ -453,9 +453,9 @@ public final class FragmentedMp4Extractor implements Extractor { private static void parseSaiz(TrackEncryptionBox encryptionBox, ParsableByteArray saiz, TrackFragment out) { int vectorSize = encryptionBox.initializationVectorSize; - saiz.setPosition(Mp4Util.ATOM_HEADER_SIZE); + saiz.setPosition(Atom.ATOM_HEADER_SIZE); int fullAtom = saiz.readInt(); - int flags = Mp4Util.parseFullAtomFlags(fullAtom); + int flags = Atom.parseFullAtomFlags(fullAtom); if ((flags & 0x01) == 1) { saiz.skip(8); } @@ -490,9 +490,9 @@ public final class FragmentedMp4Extractor implements Extractor { */ private static DefaultSampleValues parseTfhd(DefaultSampleValues extendsDefaults, ParsableByteArray tfhd) { - tfhd.setPosition(Mp4Util.ATOM_HEADER_SIZE); + tfhd.setPosition(Atom.ATOM_HEADER_SIZE); int fullAtom = tfhd.readInt(); - int flags = Mp4Util.parseFullAtomFlags(fullAtom); + int flags = Atom.parseFullAtomFlags(fullAtom); tfhd.skip(4); // trackId if ((flags & 0x01 /* base_data_offset_present */) != 0) { @@ -519,9 +519,9 @@ public final class FragmentedMp4Extractor implements Extractor { * media, expressed in the media's timescale. */ private static long parseTfdt(ParsableByteArray tfdt) { - tfdt.setPosition(Mp4Util.ATOM_HEADER_SIZE); + tfdt.setPosition(Atom.ATOM_HEADER_SIZE); int fullAtom = tfdt.readInt(); - int version = Mp4Util.parseFullAtomVersion(fullAtom); + int version = Atom.parseFullAtomVersion(fullAtom); return version == 1 ? tfdt.readUnsignedLongToLong() : tfdt.readUnsignedInt(); } @@ -536,9 +536,9 @@ public final class FragmentedMp4Extractor implements Extractor { */ private static void parseTrun(Track track, DefaultSampleValues defaultSampleValues, long decodeTime, int workaroundFlags, ParsableByteArray trun, TrackFragment out) { - trun.setPosition(Mp4Util.ATOM_HEADER_SIZE); + trun.setPosition(Atom.ATOM_HEADER_SIZE); int fullAtom = trun.readInt(); - int flags = Mp4Util.parseFullAtomFlags(fullAtom); + int flags = Atom.parseFullAtomFlags(fullAtom); int sampleCount = trun.readUnsignedIntToInt(); if ((flags & 0x01 /* data_offset_present */) != 0) { @@ -596,7 +596,7 @@ public final class FragmentedMp4Extractor implements Extractor { private static void parseUuid(ParsableByteArray uuid, TrackFragment out, byte[] extendedTypeScratch) { - uuid.setPosition(Mp4Util.ATOM_HEADER_SIZE); + uuid.setPosition(Atom.ATOM_HEADER_SIZE); uuid.readBytes(extendedTypeScratch, 0, 16); // Currently this parser only supports Microsoft's PIFF SampleEncryptionBox. @@ -615,9 +615,9 @@ public final class FragmentedMp4Extractor implements Extractor { } private static void parseSenc(ParsableByteArray senc, int offset, TrackFragment out) { - senc.setPosition(Mp4Util.ATOM_HEADER_SIZE + offset); + senc.setPosition(Atom.ATOM_HEADER_SIZE + offset); int fullAtom = senc.readInt(); - int flags = Mp4Util.parseFullAtomFlags(fullAtom); + int flags = Atom.parseFullAtomFlags(fullAtom); if ((flags & 0x01 /* override_track_encryption_box_parameters */) != 0) { // TODO: Implement this. @@ -639,9 +639,9 @@ public final class FragmentedMp4Extractor implements Extractor { * Parses a sidx atom (defined in 14496-12). */ private static SegmentIndex parseSidx(ParsableByteArray atom) { - atom.setPosition(Mp4Util.ATOM_HEADER_SIZE); + atom.setPosition(Atom.ATOM_HEADER_SIZE); int fullAtom = atom.readInt(); - int version = Mp4Util.parseFullAtomVersion(fullAtom); + int version = Atom.parseFullAtomVersion(fullAtom); atom.skip(4); long timescale = atom.readUnsignedInt(); @@ -781,7 +781,7 @@ public final class FragmentedMp4Extractor implements Extractor { if (track.type == Track.TYPE_VIDEO) { // The mp4 file contains length-prefixed NAL units, but the decoder wants start code // delimited content. - Mp4Util.replaceLengthPrefixesWithAvcStartCodes(outputData, sampleSize); + H264Util.replaceLengthPrefixesWithAvcStartCodes(outputData, sampleSize); } out.size = sampleSize; } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java index 40b3b1ca32..68582dc20b 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java @@ -18,8 +18,8 @@ package com.google.android.exoplayer.hls.parser; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; -import com.google.android.exoplayer.mp4.Mp4Util; import com.google.android.exoplayer.util.Assertions; +import com.google.android.exoplayer.util.H264Util; import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableBitArray; import com.google.android.exoplayer.util.ParsableByteArray; @@ -73,7 +73,7 @@ import java.util.List; // Scan the appended data, processing NAL units as they are encountered while (offset < limit) { - int nextNalUnitOffset = Mp4Util.findNalUnit(dataArray, offset, limit, prefixFlags); + int nextNalUnitOffset = H264Util.findNalUnit(dataArray, offset, limit, prefixFlags); if (nextNalUnitOffset < limit) { // We've seen the start of a NAL unit. @@ -84,7 +84,7 @@ import java.util.List; feedNalUnitTargetBuffersData(dataArray, offset, nextNalUnitOffset); } - int nalUnitType = Mp4Util.getNalUnitType(dataArray, nextNalUnitOffset); + int nalUnitType = H264Util.getNalUnitType(dataArray, nextNalUnitOffset); int nalUnitOffsetInData = nextNalUnitOffset - limit; if (nalUnitType == NAL_UNIT_TYPE_AUD) { if (output.isWritingSample()) { diff --git a/library/src/main/java/com/google/android/exoplayer/mp4/Atom.java b/library/src/main/java/com/google/android/exoplayer/mp4/Atom.java index b3b96dce94..ffe0f9cc77 100644 --- a/library/src/main/java/com/google/android/exoplayer/mp4/Atom.java +++ b/library/src/main/java/com/google/android/exoplayer/mp4/Atom.java @@ -24,6 +24,18 @@ import java.util.List; public abstract class Atom { + /** Size of an atom header, in bytes. */ + public static final int ATOM_HEADER_SIZE = 8; + + /** Size of a long atom header, in bytes. */ + public static final int LONG_ATOM_HEADER_SIZE = 16; + + /** Size of a full atom header, in bytes. */ + public static final int FULL_ATOM_HEADER_SIZE = 12; + + /** Value for the first 32 bits of atomSize when the atom size is actually a long value. */ + public static final int LONG_SIZE_PREFIX = 1; + public static final int TYPE_ftyp = getAtomTypeInteger("ftyp"); public static final int TYPE_avc1 = getAtomTypeInteger("avc1"); public static final int TYPE_avc3 = getAtomTypeInteger("avc3"); @@ -154,6 +166,20 @@ public abstract class Atom { } + /** + * Parses the version number out of the additional integer component of a full atom. + */ + public static int parseFullAtomVersion(int fullAtomInt) { + return 0x000000FF & (fullAtomInt >> 24); + } + + /** + * Parses the atom flags out of the additional integer component of a full atom. + */ + public static int parseFullAtomFlags(int fullAtomInt) { + return 0x00FFFFFF & fullAtomInt; + } + private static String getAtomTypeString(int type) { return "" + (char) (type >> 24) + (char) ((type >> 16) & 0xFF) diff --git a/library/src/main/java/com/google/android/exoplayer/mp4/CommonMp4AtomParsers.java b/library/src/main/java/com/google/android/exoplayer/mp4/CommonMp4AtomParsers.java index 0f9e754204..2170425058 100644 --- a/library/src/main/java/com/google/android/exoplayer/mp4/CommonMp4AtomParsers.java +++ b/library/src/main/java/com/google/android/exoplayer/mp4/CommonMp4AtomParsers.java @@ -20,6 +20,7 @@ import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.chunk.parser.mp4.TrackEncryptionBox; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.CodecSpecificDataUtil; +import com.google.android.exoplayer.util.H264Util; import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableByteArray; import com.google.android.exoplayer.util.Util; @@ -102,7 +103,7 @@ public final class CommonMp4AtomParsers { ParsableByteArray ctts = cttsAtom != null ? cttsAtom.data : null; // Skip full atom. - stsz.setPosition(Mp4Util.FULL_ATOM_HEADER_SIZE); + stsz.setPosition(Atom.FULL_ATOM_HEADER_SIZE); int fixedSampleSize = stsz.readUnsignedIntToInt(); int sampleCount = stsz.readUnsignedIntToInt(); @@ -112,10 +113,10 @@ public final class CommonMp4AtomParsers { int[] flags = new int[sampleCount]; // Prepare to read chunk offsets. - chunkOffsets.setPosition(Mp4Util.FULL_ATOM_HEADER_SIZE); + chunkOffsets.setPosition(Atom.FULL_ATOM_HEADER_SIZE); int chunkCount = chunkOffsets.readUnsignedIntToInt(); - stsc.setPosition(Mp4Util.FULL_ATOM_HEADER_SIZE); + stsc.setPosition(Atom.FULL_ATOM_HEADER_SIZE); int remainingSamplesPerChunkChanges = stsc.readUnsignedIntToInt() - 1; Assertions.checkState(stsc.readInt() == 1, "stsc first chunk must be 1"); int samplesPerChunk = stsc.readUnsignedIntToInt(); @@ -130,7 +131,7 @@ public final class CommonMp4AtomParsers { int remainingSamplesInChunk = samplesPerChunk; // Prepare to read sample timestamps. - stts.setPosition(Mp4Util.FULL_ATOM_HEADER_SIZE); + stts.setPosition(Atom.FULL_ATOM_HEADER_SIZE); int remainingTimestampDeltaChanges = stts.readUnsignedIntToInt() - 1; int remainingSamplesAtTimestampDelta = stts.readUnsignedIntToInt(); int timestampDeltaInTimeUnits = stts.readUnsignedIntToInt(); @@ -141,8 +142,8 @@ public final class CommonMp4AtomParsers { int remainingTimestampOffsetChanges = 0; int timestampOffset = 0; if (ctts != null) { - ctts.setPosition(Mp4Util.ATOM_HEADER_SIZE); - cttsHasSignedOffsets = Mp4Util.parseFullAtomVersion(ctts.readInt()) == 1; + ctts.setPosition(Atom.ATOM_HEADER_SIZE); + cttsHasSignedOffsets = Atom.parseFullAtomVersion(ctts.readInt()) == 1; remainingTimestampOffsetChanges = ctts.readUnsignedIntToInt() - 1; remainingSamplesAtTimestampOffset = ctts.readUnsignedIntToInt(); timestampOffset = cttsHasSignedOffsets ? ctts.readInt() : ctts.readUnsignedIntToInt(); @@ -151,7 +152,7 @@ public final class CommonMp4AtomParsers { int nextSynchronizationSampleIndex = -1; int remainingSynchronizationSamples = 0; if (stss != null) { - stss.setPosition(Mp4Util.FULL_ATOM_HEADER_SIZE); + stss.setPosition(Atom.FULL_ATOM_HEADER_SIZE); remainingSynchronizationSamples = stss.readUnsignedIntToInt(); nextSynchronizationSampleIndex = stss.readUnsignedIntToInt() - 1; } @@ -249,10 +250,10 @@ public final class CommonMp4AtomParsers { * @return Timescale for the movie. */ private static long parseMvhd(ParsableByteArray mvhd) { - mvhd.setPosition(Mp4Util.ATOM_HEADER_SIZE); + mvhd.setPosition(Atom.ATOM_HEADER_SIZE); int fullAtom = mvhd.readInt(); - int version = Mp4Util.parseFullAtomVersion(fullAtom); + int version = Atom.parseFullAtomVersion(fullAtom); mvhd.skip(version == 0 ? 8 : 16); @@ -266,9 +267,9 @@ public final class CommonMp4AtomParsers { * the movie header box). The duration is set to -1 if the duration is unspecified. */ private static Pair parseTkhd(ParsableByteArray tkhd) { - tkhd.setPosition(Mp4Util.ATOM_HEADER_SIZE); + tkhd.setPosition(Atom.ATOM_HEADER_SIZE); int fullAtom = tkhd.readInt(); - int version = Mp4Util.parseFullAtomVersion(fullAtom); + int version = Atom.parseFullAtomVersion(fullAtom); tkhd.skip(version == 0 ? 8 : 16); @@ -302,7 +303,7 @@ public final class CommonMp4AtomParsers { * @return The track type. */ private static int parseHdlr(ParsableByteArray hdlr) { - hdlr.setPosition(Mp4Util.FULL_ATOM_HEADER_SIZE + 4); + hdlr.setPosition(Atom.FULL_ATOM_HEADER_SIZE + 4); return hdlr.readInt(); } @@ -313,9 +314,9 @@ public final class CommonMp4AtomParsers { * @return The media timescale, defined as the number of time units that pass in one second. */ private static long parseMdhd(ParsableByteArray mdhd) { - mdhd.setPosition(Mp4Util.ATOM_HEADER_SIZE); + mdhd.setPosition(Atom.ATOM_HEADER_SIZE); int fullAtom = mdhd.readInt(); - int version = Mp4Util.parseFullAtomVersion(fullAtom); + int version = Atom.parseFullAtomVersion(fullAtom); mdhd.skip(version == 0 ? 8 : 16); return mdhd.readUnsignedInt(); @@ -323,7 +324,7 @@ public final class CommonMp4AtomParsers { private static Pair parseStsd( ParsableByteArray stsd, long durationUs) { - stsd.setPosition(Mp4Util.FULL_ATOM_HEADER_SIZE); + stsd.setPosition(Atom.FULL_ATOM_HEADER_SIZE); int numberOfEntries = stsd.readInt(); MediaFormat mediaFormat = null; TrackEncryptionBox[] trackEncryptionBoxes = new TrackEncryptionBox[numberOfEntries]; @@ -357,7 +358,7 @@ public final class CommonMp4AtomParsers { /** Returns the media format for an avc1 box. */ private static Pair parseAvcFromParent(ParsableByteArray parent, int position, int size, long durationUs) { - parent.setPosition(position + Mp4Util.ATOM_HEADER_SIZE); + parent.setPosition(position + Atom.ATOM_HEADER_SIZE); parent.skip(24); int width = parent.readUnsignedShort(); @@ -394,7 +395,7 @@ public final class CommonMp4AtomParsers { } private static List parseAvcCFromParent(ParsableByteArray parent, int position) { - parent.setPosition(position + Mp4Util.ATOM_HEADER_SIZE + 4); + parent.setPosition(position + Atom.ATOM_HEADER_SIZE + 4); // Start of the AVCDecoderConfigurationRecord (defined in 14496-15) int nalUnitLength = (parent.readUnsignedByte() & 0x3) + 1; if (nalUnitLength != 4) { @@ -407,18 +408,18 @@ public final class CommonMp4AtomParsers { // expose the AVC profile and level somewhere useful; Most likely in MediaFormat. int numSequenceParameterSets = parent.readUnsignedByte() & 0x1F; for (int j = 0; j < numSequenceParameterSets; j++) { - initializationData.add(Mp4Util.parseChildNalUnit(parent)); + initializationData.add(H264Util.parseChildNalUnit(parent)); } int numPictureParameterSets = parent.readUnsignedByte(); for (int j = 0; j < numPictureParameterSets; j++) { - initializationData.add(Mp4Util.parseChildNalUnit(parent)); + initializationData.add(H264Util.parseChildNalUnit(parent)); } return initializationData; } private static TrackEncryptionBox parseSinfFromParent(ParsableByteArray parent, int position, int size) { - int childPosition = position + Mp4Util.ATOM_HEADER_SIZE; + int childPosition = position + Atom.ATOM_HEADER_SIZE; TrackEncryptionBox trackEncryptionBox = null; while (childPosition - position < size) { @@ -441,7 +442,7 @@ public final class CommonMp4AtomParsers { } private static float parsePaspFromParent(ParsableByteArray parent, int position) { - parent.setPosition(position + Mp4Util.ATOM_HEADER_SIZE); + parent.setPosition(position + Atom.ATOM_HEADER_SIZE); int hSpacing = parent.readUnsignedIntToInt(); int vSpacing = parent.readUnsignedIntToInt(); return (float) hSpacing / vSpacing; @@ -449,7 +450,7 @@ public final class CommonMp4AtomParsers { private static TrackEncryptionBox parseSchiFromParent(ParsableByteArray parent, int position, int size) { - int childPosition = position + Mp4Util.ATOM_HEADER_SIZE; + int childPosition = position + Atom.ATOM_HEADER_SIZE; while (childPosition - position < size) { parent.setPosition(childPosition); int childAtomSize = parent.readInt(); @@ -471,7 +472,7 @@ public final class CommonMp4AtomParsers { /** Returns the media format for an mp4v box. */ private static MediaFormat parseMp4vFromParent(ParsableByteArray parent, int position, int size, long durationUs) { - parent.setPosition(position + Mp4Util.ATOM_HEADER_SIZE); + parent.setPosition(position + Atom.ATOM_HEADER_SIZE); parent.skip(24); int width = parent.readUnsignedShort(); @@ -498,7 +499,7 @@ public final class CommonMp4AtomParsers { private static Pair parseAudioSampleEntry( ParsableByteArray parent, int atomType, int position, int size, long durationUs) { - parent.setPosition(position + Mp4Util.ATOM_HEADER_SIZE); + parent.setPosition(position + Atom.ATOM_HEADER_SIZE); parent.skip(16); int channelCount = parent.readUnsignedShort(); int sampleSize = parent.readUnsignedShort(); @@ -563,7 +564,7 @@ public final class CommonMp4AtomParsers { /** Returns codec-specific initialization data contained in an esds box. */ private static byte[] parseEsdsFromParent(ParsableByteArray parent, int position) { - parent.setPosition(position + Mp4Util.ATOM_HEADER_SIZE + 4); + parent.setPosition(position + Atom.ATOM_HEADER_SIZE + 4); // Start of the ES_Descriptor (defined in 14496-1) parent.skip(1); // ES_Descriptor tag int varIntByte = parent.readUnsignedByte(); @@ -607,7 +608,7 @@ public final class CommonMp4AtomParsers { private static Ac3Format parseAc3SpecificBoxFromParent(ParsableByteArray parent, int position) { // Start of the dac3 atom (defined in ETSI TS 102 366) - parent.setPosition(position + Mp4Util.ATOM_HEADER_SIZE); + parent.setPosition(position + Atom.ATOM_HEADER_SIZE); // fscod (sample rate code) int fscod = (parent.readUnsignedByte() & 0xC0) >> 6; @@ -645,7 +646,7 @@ public final class CommonMp4AtomParsers { private static int parseEc3SpecificBoxFromParent(ParsableByteArray parent, int position) { // Start of the dec3 atom (defined in ETSI TS 102 366) - parent.setPosition(position + Mp4Util.ATOM_HEADER_SIZE); + parent.setPosition(position + Atom.ATOM_HEADER_SIZE); // TODO: Implement parsing for enhanced AC-3 with multiple sub-streams. return 0; } diff --git a/library/src/main/java/com/google/android/exoplayer/mp4/Mp4TrackSampleTable.java b/library/src/main/java/com/google/android/exoplayer/mp4/Mp4TrackSampleTable.java index 9e60146140..d3ce98225f 100644 --- a/library/src/main/java/com/google/android/exoplayer/mp4/Mp4TrackSampleTable.java +++ b/library/src/main/java/com/google/android/exoplayer/mp4/Mp4TrackSampleTable.java @@ -22,6 +22,9 @@ import com.google.android.exoplayer.util.Util; /** Sample table for a track in an MP4 file. */ public final class Mp4TrackSampleTable { + /** Sample index when no sample is available. */ + public static final int NO_SAMPLE = -1; + /** Sample offsets in bytes. */ public final long[] offsets; /** Sample sizes in bytes. */ @@ -53,7 +56,7 @@ public final class Mp4TrackSampleTable { * timestamp, if one is available. * * @param timeUs Timestamp adjacent to which to find a synchronization sample. - * @return Index of the synchronization sample, or {@link Mp4Util#NO_SAMPLE} if none. + * @return Index of the synchronization sample, or {@link #NO_SAMPLE} if none. */ public int getIndexOfEarlierOrEqualSynchronizationSample(long timeUs) { int startIndex = Util.binarySearchFloor(timestampsUs, timeUs, true, false); @@ -63,7 +66,7 @@ public final class Mp4TrackSampleTable { } } - return Mp4Util.NO_SAMPLE; + return NO_SAMPLE; } /** @@ -71,7 +74,7 @@ public final class Mp4TrackSampleTable { * if one is available. * * @param timeUs Timestamp adjacent to which to find a synchronization sample. - * @return index Index of the synchronization sample, or {@link Mp4Util#NO_SAMPLE} if none. + * @return index Index of the synchronization sample, or {@link #NO_SAMPLE} if none. */ public int getIndexOfLaterOrEqualSynchronizationSample(long timeUs) { int startIndex = Util.binarySearchCeil(timestampsUs, timeUs, true, false); @@ -81,7 +84,7 @@ public final class Mp4TrackSampleTable { } } - return Mp4Util.NO_SAMPLE; + return NO_SAMPLE; } } diff --git a/library/src/main/java/com/google/android/exoplayer/source/Mp4SampleExtractor.java b/library/src/main/java/com/google/android/exoplayer/source/Mp4SampleExtractor.java index 4a51492951..f7154c2acf 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/Mp4SampleExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/source/Mp4SampleExtractor.java @@ -25,7 +25,6 @@ import com.google.android.exoplayer.mp4.Atom; import com.google.android.exoplayer.mp4.Atom.ContainerAtom; import com.google.android.exoplayer.mp4.CommonMp4AtomParsers; import com.google.android.exoplayer.mp4.Mp4TrackSampleTable; -import com.google.android.exoplayer.mp4.Mp4Util; import com.google.android.exoplayer.mp4.Track; import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.upstream.BufferedNonBlockingInputStream; @@ -35,6 +34,7 @@ import com.google.android.exoplayer.upstream.DataSpec; import com.google.android.exoplayer.upstream.Loader; import com.google.android.exoplayer.upstream.Loader.Loadable; import com.google.android.exoplayer.util.Assertions; +import com.google.android.exoplayer.util.H264Util; import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableByteArray; import com.google.android.exoplayer.util.Util; @@ -58,6 +58,8 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac private static final String TAG = "Mp4SampleExtractor"; private static final String LOADER_THREAD_NAME = "Mp4SampleExtractor"; + private static final int NO_TRACK = -1; + // Reading results private static final int RESULT_NEED_MORE_DATA = 1; private static final int RESULT_END_OF_STREAM = 2; @@ -167,7 +169,7 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac // TODO: Implement Allocator here so it is possible to check there is only one buffer at a time. bufferPool = new BufferPool(readAheadAllocationSize); loader = new Loader(LOADER_THREAD_NAME); - atomHeader = new ParsableByteArray(Mp4Util.LONG_ATOM_HEADER_SIZE); + atomHeader = new ParsableByteArray(Atom.LONG_ATOM_HEADER_SIZE); containerAtoms = new Stack(); parserState = STATE_READING_ATOM_HEADER; @@ -206,12 +208,12 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac // Get the timestamp of the earliest currently-selected sample. int earliestSampleTrackIndex = getTrackIndexOfEarliestCurrentSample(); - if (earliestSampleTrackIndex == Mp4Util.NO_TRACK) { + if (earliestSampleTrackIndex == NO_TRACK) { tracks[trackIndex].sampleIndex = 0; return; } - if (earliestSampleTrackIndex == Mp4Util.NO_SAMPLE) { - tracks[trackIndex].sampleIndex = Mp4Util.NO_SAMPLE; + if (earliestSampleTrackIndex == Mp4TrackSampleTable.NO_SAMPLE) { + tracks[trackIndex].sampleIndex = Mp4TrackSampleTable.NO_SAMPLE; return; } long timestampUs = @@ -281,7 +283,7 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac Mp4TrackSampleTable sampleTable = tracks[trackIndex].sampleTable; int sampleIndex = sampleTable.getIndexOfEarlierOrEqualSynchronizationSample(positionUs); - if (sampleIndex == Mp4Util.NO_SAMPLE) { + if (sampleIndex == Mp4TrackSampleTable.NO_SAMPLE) { sampleIndex = sampleTable.getIndexOfLaterOrEqualSynchronizationSample(positionUs); } tracks[trackIndex].sampleIndex = sampleIndex; @@ -333,7 +335,7 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac int sampleIndex = track.sampleIndex; // Check for the end of the stream. - if (sampleIndex == Mp4Util.NO_SAMPLE) { + if (sampleIndex == Mp4TrackSampleTable.NO_SAMPLE) { // TODO: Should END_OF_STREAM be returned as soon as this track has no more samples, or as // soon as no tracks have a sample (as implemented here)? return hasSampleInAnySelectedTrack() ? SampleSource.NOTHING_READ : SampleSource.END_OF_STREAM; @@ -395,7 +397,7 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac if (MimeTypes.VIDEO_H264.equals(tracks[trackIndex].track.mediaFormat.mimeType)) { // The mp4 file contains length-prefixed access units, but the decoder wants start code // delimited content. - Mp4Util.replaceLengthPrefixesWithAvcStartCodes(sampleHolder.data, sampleSize); + H264Util.replaceLengthPrefixesWithAvcStartCodes(sampleHolder.data, sampleSize); } sampleHolder.size = sampleSize; } @@ -411,7 +413,7 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac // Advance to the next sample, checking if this was the last sample. track.sampleIndex = - sampleIndex + 1 == track.sampleTable.getSampleCount() ? Mp4Util.NO_SAMPLE : sampleIndex + 1; + sampleIndex + 1 == track.sampleTable.getSampleCount() ? Mp4TrackSampleTable.NO_SAMPLE : sampleIndex + 1; // Reset the loading error counter if we read past the offset at which the error was thrown. if (dataSourceStream.getReadPosition() > loadErrorPosition) { @@ -489,12 +491,12 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac } /** - * Returns the index of the track that contains the earliest current sample, or - * {@link Mp4Util#NO_TRACK} if no track is selected, or {@link Mp4Util#NO_SAMPLE} if no samples - * remain in selected tracks. + * Returns the index of the track that contains the earliest current sample, or {@link #NO_TRACK} + * if no track is selected, or {@link Mp4TrackSampleTable#NO_SAMPLE} if no samples remain in + * selected tracks. */ private int getTrackIndexOfEarliestCurrentSample() { - int earliestSampleTrackIndex = Mp4Util.NO_TRACK; + int earliestSampleTrackIndex = NO_TRACK; long earliestSampleOffset = Long.MAX_VALUE; for (int trackIndex = 0; trackIndex < tracks.length; trackIndex++) { Mp4Track track = tracks[trackIndex]; @@ -503,10 +505,10 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac } int sampleIndex = track.sampleIndex; - if (sampleIndex == Mp4Util.NO_SAMPLE) { - if (earliestSampleTrackIndex == Mp4Util.NO_TRACK) { + if (sampleIndex == Mp4TrackSampleTable.NO_SAMPLE) { + if (earliestSampleTrackIndex == NO_TRACK) { // A track is selected, but it has no more samples. - earliestSampleTrackIndex = Mp4Util.NO_SAMPLE; + earliestSampleTrackIndex = Mp4TrackSampleTable.NO_SAMPLE; } continue; } @@ -524,7 +526,8 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac private boolean hasSampleInAnySelectedTrack() { boolean hasSample = false; for (int trackIndex = 0; trackIndex < tracks.length; trackIndex++) { - if (tracks[trackIndex].selected && tracks[trackIndex].sampleIndex != Mp4Util.NO_SAMPLE) { + if (tracks[trackIndex].selected && tracks[trackIndex].sampleIndex + != Mp4TrackSampleTable.NO_SAMPLE) { hasSample = true; break; } @@ -556,10 +559,10 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac // The size value is either 4 or 8 bytes long (in which case atomSize = Mp4Util.LONG_ATOM_SIZE). int remainingBytes; - if (atomSize != Mp4Util.LONG_ATOM_SIZE) { - remainingBytes = Mp4Util.ATOM_HEADER_SIZE - atomBytesRead; + if (atomSize != Atom.LONG_SIZE_PREFIX) { + remainingBytes = Atom.ATOM_HEADER_SIZE - atomBytesRead; } else { - remainingBytes = Mp4Util.LONG_ATOM_HEADER_SIZE - atomBytesRead; + remainingBytes = Atom.LONG_ATOM_HEADER_SIZE - atomBytesRead; } int bytesRead = inputStream.read(atomHeader.data, atomBytesRead, remainingBytes); @@ -568,17 +571,17 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac } rootAtomBytesRead += bytesRead; atomBytesRead += bytesRead; - if (atomBytesRead < Mp4Util.ATOM_HEADER_SIZE - || (atomSize == Mp4Util.LONG_ATOM_SIZE && atomBytesRead < Mp4Util.LONG_ATOM_HEADER_SIZE)) { + if (atomBytesRead < Atom.ATOM_HEADER_SIZE + || (atomSize == Atom.LONG_SIZE_PREFIX && atomBytesRead < Atom.LONG_ATOM_HEADER_SIZE)) { return RESULT_NEED_MORE_DATA; } atomHeader.setPosition(0); atomSize = atomHeader.readUnsignedInt(); atomType = atomHeader.readInt(); - if (atomSize == Mp4Util.LONG_ATOM_SIZE) { + if (atomSize == Atom.LONG_SIZE_PREFIX) { // The extended atom size is contained in the next 8 bytes, so try to read it now. - if (atomBytesRead < Mp4Util.LONG_ATOM_HEADER_SIZE) { + if (atomBytesRead < Atom.LONG_ATOM_HEADER_SIZE) { return readAtomHeader(); } @@ -587,18 +590,18 @@ public final class Mp4SampleExtractor implements SampleExtractor, Loader.Callbac Integer atomTypeInteger = atomType; // Avoids boxing atomType twice. if (CONTAINER_TYPES.contains(atomTypeInteger)) { - if (atomSize == Mp4Util.LONG_ATOM_SIZE) { + if (atomSize == Atom.LONG_SIZE_PREFIX) { containerAtoms.add(new ContainerAtom( - atomType, rootAtomBytesRead + atomSize - Mp4Util.LONG_ATOM_HEADER_SIZE)); + atomType, rootAtomBytesRead + atomSize - Atom.LONG_ATOM_HEADER_SIZE)); } else { containerAtoms.add(new ContainerAtom( - atomType, rootAtomBytesRead + atomSize - Mp4Util.ATOM_HEADER_SIZE)); + atomType, rootAtomBytesRead + atomSize - Atom.ATOM_HEADER_SIZE)); } enterState(STATE_READING_ATOM_HEADER); } else if (LEAF_ATOM_TYPES.contains(atomTypeInteger)) { Assertions.checkState(atomSize <= Integer.MAX_VALUE); atomData = new ParsableByteArray((int) atomSize); - System.arraycopy(atomHeader.data, 0, atomData.data, 0, Mp4Util.ATOM_HEADER_SIZE); + System.arraycopy(atomHeader.data, 0, atomData.data, 0, Atom.ATOM_HEADER_SIZE); enterState(STATE_READING_ATOM_PAYLOAD); } else { atomData = null; diff --git a/library/src/main/java/com/google/android/exoplayer/mp4/Mp4Util.java b/library/src/main/java/com/google/android/exoplayer/util/H264Util.java similarity index 55% rename from library/src/main/java/com/google/android/exoplayer/mp4/Mp4Util.java rename to library/src/main/java/com/google/android/exoplayer/util/H264Util.java index ea41e3a2cf..e9feaaefd6 100644 --- a/library/src/main/java/com/google/android/exoplayer/mp4/Mp4Util.java +++ b/library/src/main/java/com/google/android/exoplayer/util/H264Util.java @@ -13,67 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.mp4; - -import com.google.android.exoplayer.util.Assertions; -import com.google.android.exoplayer.util.CodecSpecificDataUtil; -import com.google.android.exoplayer.util.ParsableByteArray; +package com.google.android.exoplayer.util; import java.nio.ByteBuffer; /** - * Utility methods and constants for parsing fragmented and unfragmented MP4 files. + * Utility methods for handling H264 data. */ -public final class Mp4Util { - - /** Size of an atom header, in bytes. */ - public static final int ATOM_HEADER_SIZE = 8; - - /** Size of a long atom header, in bytes. */ - public static final int LONG_ATOM_HEADER_SIZE = 16; - - /** Size of a full atom header, in bytes. */ - public static final int FULL_ATOM_HEADER_SIZE = 12; - - /** Value for the first 32 bits of atomSize when the atom size is actually a long value. */ - public static final int LONG_ATOM_SIZE = 1; - - /** Sample index when no sample is available. */ - public static final int NO_SAMPLE = -1; - - /** Track index when no track is selected. */ - public static final int NO_TRACK = -1; +public final class H264Util { /** Four initial bytes that must prefix H.264/AVC NAL units for decoding. */ - private static final byte[] NAL_START_CODE = new byte[] {0, 0, 0, 1}; - - /** Parses the version number out of the additional integer component of a full atom. */ - public static int parseFullAtomVersion(int fullAtomInt) { - return 0x000000FF & (fullAtomInt >> 24); - } - - /** Parses the atom flags out of the additional integer component of a full atom. */ - public static int parseFullAtomFlags(int fullAtomInt) { - return 0x00FFFFFF & fullAtomInt; - } - - /** - * Reads an unsigned integer into an integer. This method is suitable for use when it can be - * assumed that the top bit will always be set to zero. - * - * @throws IllegalArgumentException If the top bit of the input data is set. - */ - public static int readUnsignedIntToInt(ByteBuffer data) { - int result = 0xFF & data.get(); - for (int i = 1; i < 4; i++) { - result <<= 8; - result |= 0xFF & data.get(); - } - if (result < 0) { - throw new IllegalArgumentException("Top bit not zero: " + result); - } - return result; - } + public static final byte[] NAL_START_CODE = new byte[] {0, 0, 0, 1}; /** * Replaces length prefixes of NAL units in {@code buffer} with start code prefixes, within the @@ -92,7 +42,9 @@ public final class Mp4Util { buffer.position(sampleOffset + size); } - /** Constructs and returns a NAL unit with a start code followed by the data in {@code atom}. */ + /** + * Constructs and returns a NAL unit with a start code followed by the data in {@code atom}. + */ public static byte[] parseChildNalUnit(ParsableByteArray atom) { int length = atom.readUnsignedShort(); int offset = atom.getPosition(); @@ -101,43 +53,39 @@ public final class Mp4Util { } /** - * Finds the first NAL unit in {@code data}. - *

- * For a NAL unit to be found, its first four bytes must be contained within the part of the - * array being searched. + * Gets the type of the NAL unit in {@code data} that starts at {@code offset}. * * @param data The data to search. - * @param startOffset The offset (inclusive) in the data to start the search. - * @param endOffset The offset (exclusive) in the data to end the search. - * @param type The type of the NAL unit to search for, or -1 for any NAL unit. - * @return The offset of the NAL unit, or {@code endOffset} if a NAL unit was not found. + * @param offset The start offset of a NAL unit. Must lie between {@code -3} (inclusive) and + * {@code data.length - 3} (exclusive). + * @return The type of the unit. */ - public static int findNalUnit(byte[] data, int startOffset, int endOffset, int type) { - return findNalUnit(data, startOffset, endOffset, type, null); + public static int getNalUnitType(byte[] data, int offset) { + return data[offset + 3] & 0x1F; } /** - * Like {@link #findNalUnit(byte[], int, int, int)}, but supports finding of NAL units across - * array boundaries. + * Finds the first NAL unit in {@code data}. *

- * To use this method, pass the same {@code prefixFlags} parameter to successive calls where the - * data passed represents a contiguous stream. The state maintained in this parameter allows the - * detection of NAL units where the NAL unit prefix spans array boundaries. + * If {@code prefixFlags} is null then the first four bytes of a NAL unit must be entirely + * contained within the part of the array being searched in order for it to be found. *

- * Note that when using {@code prefixFlags} the return value may be 3, 2 or 1 less than - * {@code startOffset}, to indicate a NAL unit starting 3, 2 or 1 bytes before the first byte in - * the current array. + * When {@code prefixFlags} is non-null, this method supports finding NAL units whose first four + * bytes span {@code data} arrays passed to successive calls. To use this feature, pass the same + * {@code prefixFlags} parameter to successive calls. State maintained in this parameter enables + * the detection of such NAL units. Note that when using this feature, the return value may be 3, + * 2 or 1 less than {@code startOffset}, to indicate a NAL unit starting 3, 2 or 1 bytes before + * the first byte in the current array. * * @param data The data to search. * @param startOffset The offset (inclusive) in the data to start the search. * @param endOffset The offset (exclusive) in the data to end the search. - * @param type The type of the NAL unit to search for, or -1 for any NAL unit. * @param prefixFlags A boolean array whose first three elements are used to store the state * required to detect NAL units where the NAL unit prefix spans array boundaries. The array * must be at least 3 elements long. * @return The offset of the NAL unit, or {@code endOffset} if a NAL unit was not found. */ - public static int findNalUnit(byte[] data, int startOffset, int endOffset, int type, + public static int findNalUnit(byte[] data, int startOffset, int endOffset, boolean[] prefixFlags) { int length = endOffset - startOffset; @@ -147,15 +95,14 @@ public final class Mp4Util { } if (prefixFlags != null) { - if (prefixFlags[0] && matchesType(data, startOffset, type)) { + if (prefixFlags[0]) { clearPrefixFlags(prefixFlags); return startOffset - 3; - } else if (length > 1 && prefixFlags[1] && data[startOffset] == 1 - && matchesType(data, startOffset + 1, type)) { + } else if (length > 1 && prefixFlags[1] && data[startOffset] == 1) { clearPrefixFlags(prefixFlags); return startOffset - 2; } else if (length > 2 && prefixFlags[2] && data[startOffset] == 0 - && data[startOffset + 1] == 1 && matchesType(data, startOffset + 2, type)) { + && data[startOffset + 1] == 1) { clearPrefixFlags(prefixFlags); return startOffset - 1; } @@ -169,8 +116,7 @@ public final class Mp4Util { if ((data[i] & 0xFE) != 0) { // There isn't a NAL prefix here, or at the next two positions. Do nothing and let the // loop advance the index by three. - } else if (data[i - 2] == 0 && data[i - 1] == 0 && data[i] == 1 - && matchesType(data, i + 1, type)) { + } else if (data[i - 2] == 0 && data[i - 1] == 0 && data[i] == 1) { if (prefixFlags != null) { clearPrefixFlags(prefixFlags); } @@ -199,45 +145,25 @@ public final class Mp4Util { } /** - * Like {@link #findNalUnit(byte[], int, int, int)} with {@code type == -1}. + * Reads an unsigned integer into an integer. This method is suitable for use when it can be + * assumed that the top bit will always be set to zero. * - * @param data The data to search. - * @param startOffset The offset (inclusive) in the data to start the search. - * @param endOffset The offset (exclusive) in the data to end the search. - * @return The offset of the NAL unit, or {@code endOffset} if a NAL unit was not found. + * @throws IllegalArgumentException If the top bit of the input data is set. */ - public static int findNalUnit(byte[] data, int startOffset, int endOffset) { - return findNalUnit(data, startOffset, endOffset, null); + private static int readUnsignedIntToInt(ByteBuffer data) { + int result = 0xFF & data.get(); + for (int i = 1; i < 4; i++) { + result <<= 8; + result |= 0xFF & data.get(); + } + if (result < 0) { + throw new IllegalArgumentException("Top bit not zero: " + result); + } + return result; } /** - * Like {@link #findNalUnit(byte[], int, int, int, boolean[])} with {@code type == -1}. - * - * @param data The data to search. - * @param startOffset The offset (inclusive) in the data to start the search. - * @param endOffset The offset (exclusive) in the data to end the search. - * @param prefixFlags A boolean array of length at least 3. - * @return The offset of the NAL unit, or {@code endOffset} if a NAL unit was not found. - */ - public static int findNalUnit(byte[] data, int startOffset, int endOffset, - boolean[] prefixFlags) { - return findNalUnit(data, startOffset, endOffset, -1, prefixFlags); - } - - /** - * Gets the type of the NAL unit in {@code data} that starts at {@code offset}. - * - * @param data The data to search. - * @param offset The start offset of a NAL unit. Must lie between {@code -3} (inclusive) and - * {@code data.length - 3} (exclusive). - * @return The type of the unit. - */ - public static int getNalUnitType(byte[] data, int offset) { - return data[offset + 3] & 0x1F; - } - - /** - * Clears prefix flags, as used by {@link #findNalUnit(byte[], int, int, int, boolean[])}. + * Clears prefix flags, as used by {@link #findNalUnit(byte[], int, int, boolean[])}. * * @param prefixFlags The flags to clear. */ @@ -247,11 +173,4 @@ public final class Mp4Util { prefixFlags[2] = false; } - /** - * Returns true if the type at {@code offset} is equal to {@code type}, or if {@code type == -1}. - */ - private static boolean matchesType(byte[] data, int offset, int type) { - return type == -1 || (data[offset] & 0x1F) == type; - } - } diff --git a/library/src/test/java/com/google/android/exoplayer/mp4/Mp4UtilTest.java b/library/src/test/java/com/google/android/exoplayer/util/H264UtilTest.java similarity index 75% rename from library/src/test/java/com/google/android/exoplayer/mp4/Mp4UtilTest.java rename to library/src/test/java/com/google/android/exoplayer/util/H264UtilTest.java index fe304b14b6..78bfa0c3fb 100644 --- a/library/src/test/java/com/google/android/exoplayer/mp4/Mp4UtilTest.java +++ b/library/src/test/java/com/google/android/exoplayer/util/H264UtilTest.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.mp4; +package com.google.android.exoplayer.util; import junit.framework.TestCase; import java.util.Arrays; /** - * Tests for {@link Mp4Util}. + * Tests for {@link H264Util}. */ -public class Mp4UtilTest extends TestCase { +public class H264UtilTest extends TestCase { private static final int TEST_PARTIAL_NAL_POSITION = 4; private static final int TEST_NAL_POSITION = 10; @@ -31,19 +31,19 @@ public class Mp4UtilTest extends TestCase { byte[] data = buildTestData(); // Should find NAL unit. - int result = Mp4Util.findNalUnit(data, 0, data.length); + int result = H264Util.findNalUnit(data, 0, data.length, null); assertEquals(TEST_NAL_POSITION, result); // Should find NAL unit whose prefix ends one byte before the limit. - result = Mp4Util.findNalUnit(data, 0, TEST_NAL_POSITION + 4); + result = H264Util.findNalUnit(data, 0, TEST_NAL_POSITION + 4, null); assertEquals(TEST_NAL_POSITION, result); // Shouldn't find NAL unit whose prefix ends at the limit (since the limit is exclusive). - result = Mp4Util.findNalUnit(data, 0, TEST_NAL_POSITION + 3); + result = H264Util.findNalUnit(data, 0, TEST_NAL_POSITION + 3, null); assertEquals(TEST_NAL_POSITION + 3, result); // Should find NAL unit whose prefix starts at the offset. - result = Mp4Util.findNalUnit(data, TEST_NAL_POSITION, data.length); + result = H264Util.findNalUnit(data, TEST_NAL_POSITION, data.length, null); assertEquals(TEST_NAL_POSITION, result); // Shouldn't find NAL unit whose prefix starts one byte past the offset. - result = Mp4Util.findNalUnit(data, TEST_NAL_POSITION + 1, data.length); + result = H264Util.findNalUnit(data, TEST_NAL_POSITION + 1, data.length, null); assertEquals(data.length, result); } @@ -54,9 +54,9 @@ public class Mp4UtilTest extends TestCase { boolean[] prefixFlags = new boolean[3]; byte[] data1 = Arrays.copyOfRange(data, 0, TEST_NAL_POSITION + 1); byte[] data2 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 1, data.length); - int result = Mp4Util.findNalUnit(data1, 0, data1.length, prefixFlags); + int result = H264Util.findNalUnit(data1, 0, data1.length, prefixFlags); assertEquals(data1.length, result); - result = Mp4Util.findNalUnit(data2, 0, data2.length, prefixFlags); + result = H264Util.findNalUnit(data2, 0, data2.length, prefixFlags); assertEquals(-1, result); assertPrefixFlagsCleared(prefixFlags); @@ -64,9 +64,9 @@ public class Mp4UtilTest extends TestCase { prefixFlags = new boolean[3]; data1 = Arrays.copyOfRange(data, 0, TEST_NAL_POSITION + 3); data2 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 3, data.length); - result = Mp4Util.findNalUnit(data1, 0, data1.length, prefixFlags); + result = H264Util.findNalUnit(data1, 0, data1.length, prefixFlags); assertEquals(data1.length, result); - result = Mp4Util.findNalUnit(data2, 0, data2.length, prefixFlags); + result = H264Util.findNalUnit(data2, 0, data2.length, prefixFlags); assertEquals(-3, result); assertPrefixFlagsCleared(prefixFlags); @@ -75,11 +75,11 @@ public class Mp4UtilTest extends TestCase { data1 = Arrays.copyOfRange(data, 0, TEST_NAL_POSITION + 1); data2 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 1, TEST_NAL_POSITION + 2); byte[] data3 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 2, data.length); - result = Mp4Util.findNalUnit(data1, 0, data1.length, prefixFlags); + result = H264Util.findNalUnit(data1, 0, data1.length, prefixFlags); assertEquals(data1.length, result); - result = Mp4Util.findNalUnit(data2, 0, data2.length, prefixFlags); + result = H264Util.findNalUnit(data2, 0, data2.length, prefixFlags); assertEquals(data2.length, result); - result = Mp4Util.findNalUnit(data3, 0, data3.length, prefixFlags); + result = H264Util.findNalUnit(data3, 0, data3.length, prefixFlags); assertEquals(-2, result); assertPrefixFlagsCleared(prefixFlags); @@ -89,13 +89,13 @@ public class Mp4UtilTest extends TestCase { data2 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 1, TEST_NAL_POSITION + 2); data3 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 2, TEST_NAL_POSITION + 3); byte[] data4 = Arrays.copyOfRange(data, TEST_NAL_POSITION + 2, data.length); - result = Mp4Util.findNalUnit(data1, 0, data1.length, prefixFlags); + result = H264Util.findNalUnit(data1, 0, data1.length, prefixFlags); assertEquals(data1.length, result); - result = Mp4Util.findNalUnit(data2, 0, data2.length, prefixFlags); + result = H264Util.findNalUnit(data2, 0, data2.length, prefixFlags); assertEquals(data2.length, result); - result = Mp4Util.findNalUnit(data3, 0, data3.length, prefixFlags); + result = H264Util.findNalUnit(data3, 0, data3.length, prefixFlags); assertEquals(data3.length, result); - result = Mp4Util.findNalUnit(data4, 0, data4.length, prefixFlags); + result = H264Util.findNalUnit(data4, 0, data4.length, prefixFlags); assertEquals(-3, result); assertPrefixFlagsCleared(prefixFlags); @@ -103,9 +103,9 @@ public class Mp4UtilTest extends TestCase { prefixFlags = new boolean[3]; data1 = Arrays.copyOfRange(data, 0, TEST_PARTIAL_NAL_POSITION + 2); data2 = Arrays.copyOfRange(data, TEST_PARTIAL_NAL_POSITION + 2, data.length); - result = Mp4Util.findNalUnit(data1, 0, data1.length, prefixFlags); + result = H264Util.findNalUnit(data1, 0, data1.length, prefixFlags); assertEquals(data1.length, result); - result = Mp4Util.findNalUnit(data2, 0, data2.length, prefixFlags); + result = H264Util.findNalUnit(data2, 0, data2.length, prefixFlags); assertEquals(4, result); assertPrefixFlagsCleared(prefixFlags); } From fc176b9cbe5cdbaa662738eb737ac0d3d5aca2ab Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 10 Apr 2015 23:41:45 +0100 Subject: [PATCH 64/69] Fix TsExtractor bug. The limit on the ts packet buffer can be reduced during processing if it's discovered to have padding. Hence we need to reset it back to the ts packet size before processing each packet. --- .../com/google/android/exoplayer/hls/parser/TsExtractor.java | 1 + 1 file changed, 1 insertion(+) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java b/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java index a7955ccf99..f19b3496c6 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java @@ -75,6 +75,7 @@ public final class TsExtractor implements HlsExtractor { } tsPacketBuffer.setPosition(0); + tsPacketBuffer.setLimit(TS_PACKET_SIZE); int syncByte = tsPacketBuffer.readUnsignedByte(); if (syncByte != TS_SYNC_BYTE) { return; From 3a551c73ba78100292d133c0bc54811f6d195319 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Sat, 11 Apr 2015 00:23:46 +0100 Subject: [PATCH 65/69] Move hls.parser to a new extractor package. This package will house all extractors, which will be unified to implement a single Extractor interface. --- .../Extractor.java} | 4 ++-- .../RollingSampleBuffer.java | 2 +- .../{hls/parser => extractor}/SampleQueue.java | 4 ++-- .../parser => extractor/ts}/AdtsExtractor.java | 5 +++-- .../{hls/parser => extractor/ts}/AdtsReader.java | 4 ++-- .../ts}/DataSourceExtractorInput.java | 4 ++-- .../ts}/ElementaryStreamReader.java | 4 ++-- .../{hls/parser => extractor/ts}/H264Reader.java | 4 ++-- .../{hls/parser => extractor/ts}/Id3Reader.java | 4 ++-- .../{hls/parser => extractor/ts}/SeiReader.java | 4 ++-- .../parser => extractor/ts}/TsExtractor.java | 5 +++-- .../android/exoplayer/hls/HlsChunkSource.java | 9 ++++----- .../hls/{parser => }/HlsExtractorWrapper.java | 16 +++++++++------- .../android/exoplayer/hls/HlsSampleSource.java | 1 - .../google/android/exoplayer/hls/TsChunk.java | 5 ++--- 15 files changed, 38 insertions(+), 37 deletions(-) rename library/src/main/java/com/google/android/exoplayer/{hls/parser/HlsExtractor.java => extractor/Extractor.java} (98%) rename library/src/main/java/com/google/android/exoplayer/{hls/parser => extractor}/RollingSampleBuffer.java (99%) rename library/src/main/java/com/google/android/exoplayer/{hls/parser => extractor}/SampleQueue.java (98%) rename library/src/main/java/com/google/android/exoplayer/{hls/parser => extractor/ts}/AdtsExtractor.java (92%) rename library/src/main/java/com/google/android/exoplayer/{hls/parser => extractor/ts}/AdtsReader.java (98%) rename library/src/main/java/com/google/android/exoplayer/{hls/parser => extractor/ts}/DataSourceExtractorInput.java (95%) rename library/src/main/java/com/google/android/exoplayer/{hls/parser => extractor/ts}/ElementaryStreamReader.java (93%) rename library/src/main/java/com/google/android/exoplayer/{hls/parser => extractor/ts}/H264Reader.java (99%) rename library/src/main/java/com/google/android/exoplayer/{hls/parser => extractor/ts}/Id3Reader.java (91%) rename library/src/main/java/com/google/android/exoplayer/{hls/parser => extractor/ts}/SeiReader.java (94%) rename library/src/main/java/com/google/android/exoplayer/{hls/parser => extractor/ts}/TsExtractor.java (98%) rename library/src/main/java/com/google/android/exoplayer/hls/{parser => }/HlsExtractorWrapper.java (91%) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/Extractor.java similarity index 98% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java rename to library/src/main/java/com/google/android/exoplayer/extractor/Extractor.java index c5c5790147..fc8e4a0ded 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/Extractor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.extractor; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.upstream.DataSource; @@ -24,7 +24,7 @@ import java.io.IOException; /** * Facilitates extraction of media samples for HLS playbacks. */ -public interface HlsExtractor { +public interface Extractor { /** * An object from which source data can be read. diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/RollingSampleBuffer.java b/library/src/main/java/com/google/android/exoplayer/extractor/RollingSampleBuffer.java similarity index 99% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/RollingSampleBuffer.java rename to library/src/main/java/com/google/android/exoplayer/extractor/RollingSampleBuffer.java index fe9eab4795..e34474d9ba 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/RollingSampleBuffer.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/RollingSampleBuffer.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.extractor; import com.google.android.exoplayer.C; import com.google.android.exoplayer.SampleHolder; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java b/library/src/main/java/com/google/android/exoplayer/extractor/SampleQueue.java similarity index 98% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java rename to library/src/main/java/com/google/android/exoplayer/extractor/SampleQueue.java index e615567901..b207fc7adc 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/SampleQueue.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/SampleQueue.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.extractor; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; -import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; +import com.google.android.exoplayer.extractor.Extractor.TrackOutput; import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.util.ParsableByteArray; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsExtractor.java similarity index 92% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java rename to library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsExtractor.java index f286afac92..46bf20e744 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsExtractor.java @@ -13,8 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.extractor.ts; +import com.google.android.exoplayer.extractor.Extractor; import com.google.android.exoplayer.util.ParsableByteArray; import java.io.IOException; @@ -23,7 +24,7 @@ import java.io.IOException; * Facilitates the extraction of AAC samples from elementary audio files formatted as AAC with ADTS * headers. */ -public class AdtsExtractor implements HlsExtractor { +public class AdtsExtractor implements Extractor { private static final int MAX_PACKET_SIZE = 200; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsReader.java similarity index 98% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java rename to library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsReader.java index fc7417a60a..397485a85b 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/AdtsReader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsReader.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.extractor.ts; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; +import com.google.android.exoplayer.extractor.Extractor.TrackOutput; import com.google.android.exoplayer.util.CodecSpecificDataUtil; import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableBitArray; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/DataSourceExtractorInput.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/DataSourceExtractorInput.java similarity index 95% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/DataSourceExtractorInput.java rename to library/src/main/java/com/google/android/exoplayer/extractor/ts/DataSourceExtractorInput.java index 5e23f986e0..f1bfd9f275 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/DataSourceExtractorInput.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/DataSourceExtractorInput.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.extractor.ts; -import com.google.android.exoplayer.hls.parser.HlsExtractor.ExtractorInput; +import com.google.android.exoplayer.extractor.Extractor.ExtractorInput; import com.google.android.exoplayer.upstream.DataSource; import java.io.IOException; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/ElementaryStreamReader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/ElementaryStreamReader.java similarity index 93% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/ElementaryStreamReader.java rename to library/src/main/java/com/google/android/exoplayer/extractor/ts/ElementaryStreamReader.java index a441ff35b9..16393a420b 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/ElementaryStreamReader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/ElementaryStreamReader.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.extractor.ts; -import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; +import com.google.android.exoplayer.extractor.Extractor.TrackOutput; import com.google.android.exoplayer.util.ParsableByteArray; /** diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java similarity index 99% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java rename to library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java index 68582dc20b..2ad5634b26 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/H264Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.extractor.ts; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; +import com.google.android.exoplayer.extractor.Extractor.TrackOutput; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.H264Util; import com.google.android.exoplayer.util.MimeTypes; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/Id3Reader.java similarity index 91% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java rename to library/src/main/java/com/google/android/exoplayer/extractor/ts/Id3Reader.java index d48aa6e56d..4d93b2df5b 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/Id3Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/Id3Reader.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.extractor.ts; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; +import com.google.android.exoplayer.extractor.Extractor.TrackOutput; import com.google.android.exoplayer.util.ParsableByteArray; /** diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/SeiReader.java similarity index 94% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java rename to library/src/main/java/com/google/android/exoplayer/extractor/ts/SeiReader.java index 979bc44d5f..a71b629ebf 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/SeiReader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/SeiReader.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.extractor.ts; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; +import com.google.android.exoplayer.extractor.Extractor.TrackOutput; import com.google.android.exoplayer.text.eia608.Eia608Parser; import com.google.android.exoplayer.util.ParsableByteArray; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/TsExtractor.java similarity index 98% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java rename to library/src/main/java/com/google/android/exoplayer/extractor/ts/TsExtractor.java index f19b3496c6..6fa5aa95c7 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/TsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/TsExtractor.java @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.extractor.ts; import com.google.android.exoplayer.C; +import com.google.android.exoplayer.extractor.Extractor; import com.google.android.exoplayer.util.ParsableBitArray; import com.google.android.exoplayer.util.ParsableByteArray; @@ -27,7 +28,7 @@ import java.io.IOException; /** * Facilitates the extraction of data from the MPEG-2 TS container format. */ -public final class TsExtractor implements HlsExtractor { +public final class TsExtractor implements Extractor { private static final String TAG = "TsExtractor"; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index 2e81dd0b2b..a3faa7a41a 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -17,10 +17,9 @@ package com.google.android.exoplayer.hls; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.hls.parser.AdtsExtractor; -import com.google.android.exoplayer.hls.parser.HlsExtractor; -import com.google.android.exoplayer.hls.parser.HlsExtractorWrapper; -import com.google.android.exoplayer.hls.parser.TsExtractor; +import com.google.android.exoplayer.extractor.Extractor; +import com.google.android.exoplayer.extractor.ts.AdtsExtractor; +import com.google.android.exoplayer.extractor.ts.TsExtractor; import com.google.android.exoplayer.upstream.Aes128DataSource; import com.google.android.exoplayer.upstream.BandwidthMeter; import com.google.android.exoplayer.upstream.BufferPool; @@ -344,7 +343,7 @@ public class HlsChunkSource { // Configure the extractor that will read the chunk. HlsExtractorWrapper extractorWrapper; if (previousTsChunk == null || segment.discontinuity || switchingVariant || liveDiscontinuity) { - HlsExtractor extractor = chunkUri.getLastPathSegment().endsWith(AAC_FILE_EXTENSION) + Extractor extractor = chunkUri.getLastPathSegment().endsWith(AAC_FILE_EXTENSION) ? new AdtsExtractor(startTimeUs) : new TsExtractor(startTimeUs); extractorWrapper = new HlsExtractorWrapper(bufferPool, extractor, switchingVariantSpliced); diff --git a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsExtractorWrapper.java similarity index 91% rename from library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java rename to library/src/main/java/com/google/android/exoplayer/hls/HlsExtractorWrapper.java index 25dcd14961..628e216418 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/parser/HlsExtractorWrapper.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsExtractorWrapper.java @@ -13,12 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.hls.parser; +package com.google.android.exoplayer.hls; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; -import com.google.android.exoplayer.hls.parser.HlsExtractor.ExtractorInput; -import com.google.android.exoplayer.hls.parser.HlsExtractor.TrackOutput; +import com.google.android.exoplayer.extractor.Extractor; +import com.google.android.exoplayer.extractor.SampleQueue; +import com.google.android.exoplayer.extractor.Extractor.ExtractorInput; +import com.google.android.exoplayer.extractor.Extractor.TrackOutput; import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.util.Assertions; @@ -27,12 +29,12 @@ import android.util.SparseArray; import java.io.IOException; /** - * Wraps a {@link HlsExtractor}, adding functionality to enable reading of the extracted samples. + * Wraps a {@link Extractor}, adding functionality to enable reading of the extracted samples. */ -public final class HlsExtractorWrapper implements HlsExtractor.TrackOutputBuilder { +public final class HlsExtractorWrapper implements Extractor.TrackOutputBuilder { private final BufferPool bufferPool; - private final HlsExtractor extractor; + private final Extractor extractor; private final SparseArray sampleQueues; private final boolean shouldSpliceIn; @@ -42,7 +44,7 @@ public final class HlsExtractorWrapper implements HlsExtractor.TrackOutputBuilde private boolean prepared; private boolean spliceConfigured; - public HlsExtractorWrapper(BufferPool bufferPool, HlsExtractor extractor, + public HlsExtractorWrapper(BufferPool bufferPool, Extractor extractor, boolean shouldSpliceIn) { this.bufferPool = bufferPool; this.extractor = extractor; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java index ed3a1c73e0..72f9e6d587 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java @@ -22,7 +22,6 @@ import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.SampleSource; import com.google.android.exoplayer.TrackInfo; import com.google.android.exoplayer.TrackRenderer; -import com.google.android.exoplayer.hls.parser.HlsExtractorWrapper; import com.google.android.exoplayer.upstream.Loader; import com.google.android.exoplayer.upstream.Loader.Loadable; import com.google.android.exoplayer.util.Assertions; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java b/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java index 3b9e4c8000..fb1d0914c5 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java @@ -15,9 +15,8 @@ */ package com.google.android.exoplayer.hls; -import com.google.android.exoplayer.hls.parser.DataSourceExtractorInput; -import com.google.android.exoplayer.hls.parser.HlsExtractor.ExtractorInput; -import com.google.android.exoplayer.hls.parser.HlsExtractorWrapper; +import com.google.android.exoplayer.extractor.Extractor.ExtractorInput; +import com.google.android.exoplayer.extractor.ts.DataSourceExtractorInput; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.upstream.DataSpec; From 37d12ff14a606d20a7a4df4591e5cabb26a13d1e Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Sat, 11 Apr 2015 00:55:38 +0100 Subject: [PATCH 66/69] Steps toward generalizing the Extractor interface for all extractors. --- ...rInput.java => DefaultExtractorInput.java} | 46 +++--- ...mpleQueue.java => DefaultTrackOutput.java} | 56 +++---- .../exoplayer/extractor/Extractor.java | 137 +++--------------- .../exoplayer/extractor/ExtractorInput.java | 109 ++++++++++++++ .../exoplayer/extractor/ExtractorOutput.java | 39 +++++ .../extractor/RollingSampleBuffer.java | 43 +++--- .../exoplayer/extractor/TrackOutput.java | 58 ++++++++ .../exoplayer/extractor/ts/AdtsExtractor.java | 14 +- .../exoplayer/extractor/ts/AdtsReader.java | 15 +- .../extractor/ts/ElementaryStreamReader.java | 2 +- .../exoplayer/extractor/ts/H264Reader.java | 36 +++-- .../exoplayer/extractor/ts/Id3Reader.java | 20 ++- .../exoplayer/extractor/ts/SeiReader.java | 9 +- .../exoplayer/extractor/ts/TsExtractor.java | 35 +++-- .../exoplayer/hls/HlsExtractorWrapper.java | 38 ++--- .../google/android/exoplayer/hls/TsChunk.java | 15 +- 16 files changed, 405 insertions(+), 267 deletions(-) rename library/src/main/java/com/google/android/exoplayer/extractor/{ts/DataSourceExtractorInput.java => DefaultExtractorInput.java} (67%) rename library/src/main/java/com/google/android/exoplayer/extractor/{SampleQueue.java => DefaultTrackOutput.java} (86%) create mode 100644 library/src/main/java/com/google/android/exoplayer/extractor/ExtractorInput.java create mode 100644 library/src/main/java/com/google/android/exoplayer/extractor/ExtractorOutput.java create mode 100644 library/src/main/java/com/google/android/exoplayer/extractor/TrackOutput.java diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/DataSourceExtractorInput.java b/library/src/main/java/com/google/android/exoplayer/extractor/DefaultExtractorInput.java similarity index 67% rename from library/src/main/java/com/google/android/exoplayer/extractor/ts/DataSourceExtractorInput.java rename to library/src/main/java/com/google/android/exoplayer/extractor/DefaultExtractorInput.java index f1bfd9f275..0fb9008afc 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/DataSourceExtractorInput.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/DefaultExtractorInput.java @@ -13,32 +13,35 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.google.android.exoplayer.extractor.ts; +package com.google.android.exoplayer.extractor; -import com.google.android.exoplayer.extractor.Extractor.ExtractorInput; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.upstream.DataSource; +import java.io.EOFException; import java.io.IOException; /** * An {@link ExtractorInput} that wraps a {@link DataSource}. */ -public final class DataSourceExtractorInput implements ExtractorInput { +public final class DefaultExtractorInput implements ExtractorInput { private static final byte[] SCRATCH_SPACE = new byte[4096]; private final DataSource dataSource; private long position; - private boolean isEnded; + private long length; /** * @param dataSource The wrapped {@link DataSource}. * @param position The initial position in the stream. + * @param length The length of the stream, or {@link C#LENGTH_UNBOUNDED} if it is unknown. */ - public DataSourceExtractorInput(DataSource dataSource, long position) { + public DefaultExtractorInput(DataSource dataSource, long position, long length) { this.dataSource = dataSource; this.position = position; + this.length = length; } @Override @@ -47,16 +50,15 @@ public final class DataSourceExtractorInput implements ExtractorInput { throw new InterruptedException(); } int bytesRead = dataSource.read(target, offset, length); - if (bytesRead == -1) { - isEnded = true; - return -1; + if (bytesRead == C.RESULT_END_OF_INPUT) { + return C.RESULT_END_OF_INPUT; } position += bytesRead; return bytesRead; } @Override - public boolean readFully(byte[] target, int offset, int length) + public boolean readFully(byte[] target, int offset, int length, boolean allowEndOfInput) throws IOException, InterruptedException { int remaining = length; while (remaining > 0) { @@ -64,9 +66,11 @@ public final class DataSourceExtractorInput implements ExtractorInput { throw new InterruptedException(); } int bytesRead = dataSource.read(target, offset, remaining); - if (bytesRead == -1) { - isEnded = true; - return false; + if (bytesRead == C.RESULT_END_OF_INPUT) { + if (allowEndOfInput && remaining == length) { + return false; + } + throw new EOFException(); } offset += bytesRead; remaining -= bytesRead; @@ -76,21 +80,25 @@ public final class DataSourceExtractorInput implements ExtractorInput { } @Override - public boolean skipFully(int length) throws IOException, InterruptedException { + public void readFully(byte[] target, int offset, int length) + throws IOException, InterruptedException { + readFully(target, offset, length, false); + } + + @Override + public void skipFully(int length) throws IOException, InterruptedException { int remaining = length; while (remaining > 0) { if (Thread.interrupted()) { throw new InterruptedException(); } int bytesRead = dataSource.read(SCRATCH_SPACE, 0, Math.min(SCRATCH_SPACE.length, remaining)); - if (bytesRead == -1) { - isEnded = true; - return false; + if (bytesRead == C.RESULT_END_OF_INPUT) { + throw new EOFException(); } remaining -= bytesRead; } position += length; - return true; } @Override @@ -99,8 +107,8 @@ public final class DataSourceExtractorInput implements ExtractorInput { } @Override - public boolean isEnded() { - return isEnded; + public long getLength() { + return length; } } diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/SampleQueue.java b/library/src/main/java/com/google/android/exoplayer/extractor/DefaultTrackOutput.java similarity index 86% rename from library/src/main/java/com/google/android/exoplayer/extractor/SampleQueue.java rename to library/src/main/java/com/google/android/exoplayer/extractor/DefaultTrackOutput.java index b207fc7adc..5455e9a398 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/SampleQueue.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/DefaultTrackOutput.java @@ -17,7 +17,6 @@ package com.google.android.exoplayer.extractor; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; -import com.google.android.exoplayer.extractor.Extractor.TrackOutput; import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.util.ParsableByteArray; @@ -29,7 +28,7 @@ import java.io.IOException; * the first sample returned from the queue is a keyframe, allowing splicing to another queue, and * so on. */ -public final class SampleQueue implements TrackOutput { +public final class DefaultTrackOutput implements TrackOutput { private final RollingSampleBuffer rollingBuffer; private final SampleHolder sampleInfoHolder; @@ -39,14 +38,11 @@ public final class SampleQueue implements TrackOutput { private long lastReadTimeUs; private long spliceOutTimeUs; - // Accessed only by the loading thread. - private boolean writingSample; - // Accessed by both the loading and consuming threads. private volatile long largestParsedTimestampUs; private volatile MediaFormat format; - public SampleQueue(BufferPool bufferPool) { + public DefaultTrackOutput(BufferPool bufferPool) { rollingBuffer = new RollingSampleBuffer(bufferPool); sampleInfoHolder = new SampleHolder(SampleHolder.BUFFER_REPLACEMENT_MODE_DISABLED); needKeyframe = true; @@ -61,6 +57,13 @@ public final class SampleQueue implements TrackOutput { // Called by the consuming thread. + /** + * True if the output has received a format. False otherwise. + */ + public boolean hasFormat() { + return format != null; + } + public MediaFormat getFormat() { return format; } @@ -114,7 +117,7 @@ public final class SampleQueue implements TrackOutput { * @param nextQueue The queue being spliced to. * @return Whether the splice was configured successfully. */ - public boolean configureSpliceTo(SampleQueue nextQueue) { + public boolean configureSpliceTo(DefaultTrackOutput nextQueue) { if (spliceOutTimeUs != Long.MIN_VALUE) { // We've already configured the splice. return true; @@ -164,44 +167,29 @@ public final class SampleQueue implements TrackOutput { return true; } + // Called by the loading thread. + + public int sampleData(DataSource dataSource, int length) throws IOException { + return rollingBuffer.appendData(dataSource, length); + } + // TrackOutput implementation. Called by the loading thread. @Override - public boolean hasFormat() { - return format != null; - } - - @Override - public void setFormat(MediaFormat format) { + public void format(MediaFormat format) { this.format = format; } @Override - public int appendData(DataSource dataSource, int length) throws IOException { - return rollingBuffer.appendData(dataSource, length); - } - - @Override - public void appendData(ParsableByteArray buffer, int length) { + public void sampleData(ParsableByteArray buffer, int length) { rollingBuffer.appendData(buffer, length); } @Override - public void startSample(long sampleTimeUs, int offset) { - writingSample = true; - largestParsedTimestampUs = Math.max(largestParsedTimestampUs, sampleTimeUs); - rollingBuffer.startSample(sampleTimeUs, offset); - } - - @Override - public void commitSample(int flags, int offset, byte[] encryptionKey) { - rollingBuffer.commitSample(flags, offset, encryptionKey); - writingSample = false; - } - - @Override - public boolean isWritingSample() { - return writingSample; + public void sampleMetadata(long timeUs, int flags, int size, int offset, byte[] encryptionKey) { + largestParsedTimestampUs = Math.max(largestParsedTimestampUs, timeUs); + rollingBuffer.commitSample(timeUs, flags, rollingBuffer.getWritePosition() - size - offset, + size, encryptionKey); } } diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/Extractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/Extractor.java index fc8e4a0ded..a2a11593a1 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/Extractor.java @@ -15,139 +15,44 @@ */ package com.google.android.exoplayer.extractor; -import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.upstream.DataSource; -import com.google.android.exoplayer.util.ParsableByteArray; +import com.google.android.exoplayer.C; import java.io.IOException; /** - * Facilitates extraction of media samples for HLS playbacks. + * Facilitates extraction of data from a container format. */ public interface Extractor { /** - * An object from which source data can be read. + * Returned by {@link #read(ExtractorInput)} if the {@link ExtractorInput} passed to the next + * {@link #read(ExtractorInput)} is required to provide data continuing from the position in the + * stream reached by the returning call. */ - public interface ExtractorInput { - - /** - * Reads up to {@code length} bytes from the input. - *

- * This method blocks until at least one byte of data can be read, the end of the input is - * detected, or an exception is thrown. - * - * @param target A target array into which data should be written. - * @param offset The offset into the target array at which to write. - * @param length The maximum number of bytes to read from the input. - * @return The number of bytes read, or -1 if the input has ended. - * @throws IOException If an error occurs reading from the input. - * @throws InterruptedException If the thread has been interrupted. - */ - int read(byte[] target, int offset, int length) throws IOException, InterruptedException; - - /** - * Like {@link #read(byte[], int, int)}, but guaranteed to read request {@code length} in full - * unless the end of the input is detected, or an exception is thrown. - * - * TODO: Firm up behavior of this method if (a) zero bytes are read before EOS, (b) the read - * is partially satisfied before EOS. - * - * @param target A target array into which data should be written. - * @param offset The offset into the target array at which to write. - * @param length The number of bytes to read from the input. - * @return True if the read was successful. False if the end of the input was reached. - * @throws IOException If an error occurs reading from the input. - * @throws InterruptedException If the thread has been interrupted. - */ - boolean readFully(byte[] target, int offset, int length) - throws IOException, InterruptedException; - - /** - * Like {@link #readFully(byte[], int, int)}, except the data is skipped instead of read. - * - * TODO: Firm up behavior of this method if (a) zero bytes are skipped before EOS, (b) the skip - * is partially satisfied before EOS. - * - * @param length The number of bytes to skip from the input. - * @return True if the read was successful. False if the end of the input was reached. - * @throws IOException If an error occurs reading from the input. - * @throws InterruptedException If the thread is interrupted. - */ - boolean skipFully(int length) throws IOException, InterruptedException; - - /** - * The current position in the stream. - * - * @return The position in the stream. - */ - long getPosition(); - - /** - * Whether or not the input has ended. - * - * @return True if the input has ended. False otherwise. - */ - boolean isEnded(); - - } + public static final int RESULT_CONTINUE = 0; + /** + * Returned by {@link #read(ExtractorInput)} if the end of the {@link ExtractorInput} was reached. + * Equal to {@link C#RESULT_END_OF_INPUT}. + */ + public static final int RESULT_END_OF_INPUT = C.RESULT_END_OF_INPUT; /** - * An object to which extracted data should be output. - */ - public interface TrackOutputBuilder { - - /** - * Invoked to build a {@link TrackOutput} to which data should be output for a given track. - * - * @param trackId A stable track id. - * @return The corresponding {@link TrackOutput}. - */ - TrackOutput buildOutput(int trackId); - - /** - * Invoked when all {@link TrackOutput}s have been built, meaning {@link #buildOutput(int)} - * will not be invoked again. - */ - void allOutputsBuilt(); - - } - - /** - * An object to which extracted data belonging to a given track should be output. - */ - public interface TrackOutput { - - boolean hasFormat(); - - void setFormat(MediaFormat format); - - boolean isWritingSample(); - - int appendData(DataSource dataSource, int length) throws IOException; - - void appendData(ParsableByteArray data, int length); - - void startSample(long timeUs, int offset); - - void commitSample(int flags, int offset, byte[] encryptionKey); - - } - - /** - * Initializes the extractor. + * Initializes the extractor with an {@link ExtractorOutput}. * - * @param output A {@link TrackOutputBuilder} to which extracted data should be output. + * @param output An {@link ExtractorOutput} to receive extracted data. */ - void init(TrackOutputBuilder output); + void init(ExtractorOutput output); /** - * Reads from the provided {@link ExtractorInput}. + * Extracts data read from a provided {@link ExtractorInput}. + *

+ * Each read will extract at most one sample from the stream before returning. * - * @param input The {@link ExtractorInput} from which to read. - * @throws IOException If an error occurred reading from the source. + * @param input The {@link ExtractorInput} from which data should be read. + * @return One of the {@code RESULT_} values defined in this interface. + * @throws IOException If an error occurred reading from the input. * @throws InterruptedException If the thread was interrupted. */ - void read(ExtractorInput input) throws IOException, InterruptedException; + int read(ExtractorInput input) throws IOException, InterruptedException; } diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ExtractorInput.java b/library/src/main/java/com/google/android/exoplayer/extractor/ExtractorInput.java new file mode 100644 index 0000000000..63c09aab3d --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ExtractorInput.java @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.extractor; + +import com.google.android.exoplayer.C; + +import java.io.EOFException; +import java.io.IOException; + +/** + * Provides data to be consumed by an {@link Extractor}. + */ +public interface ExtractorInput { + + /** + * Reads up to {@code length} bytes from the input. + *

+ * This method blocks until at least one byte of data can be read, the end of the input is + * detected, or an exception is thrown. + * + * @param target A target array into which data should be written. + * @param offset The offset into the target array at which to write. + * @param length The maximum number of bytes to read from the input. + * @return The number of bytes read, or {@link C#RESULT_END_OF_INPUT} if the input has ended. + * @throws IOException If an error occurs reading from the input. + * @throws InterruptedException If the thread has been interrupted. + */ + int read(byte[] target, int offset, int length) throws IOException, InterruptedException; + + /** + * Like {@link #read(byte[], int, int)}, but reads the requested {@code length} in full. + *

+ * If the end of the input is found having read no data, then behavior is dependent on + * {@code allowEndOfInput}. If {@code allowEndOfInput == true} then {@code false} is returned. + * Otherwise an {@link EOFException} is thrown. + *

+ * Encountering the end of input having partially satisfied the read is always considered an + * error, and will result in an {@link EOFException} being thrown. + * + * @param target A target array into which data should be written. + * @param offset The offset into the target array at which to write. + * @param length The number of bytes to read from the input. + * @param allowEndOfInput True if encountering the end of the input having read no data is + * allowed, and should result in {@code false} being returned. False if it should be + * considered an error, causing an {@link EOFException} to be thrown. + * @return True if the read was successful. False if the end of the input was encountered having + * read no data. + * @throws EOFException If the end of input was encountered having partially satisfied the read + * (i.e. having read at least one byte, but fewer than {@code length}), or if no bytes were + * read and {@code allowEndOfInput} is false. + * @throws IOException If an error occurs reading from the input. + * @throws InterruptedException If the thread has been interrupted. + */ + boolean readFully(byte[] target, int offset, int length, boolean allowEndOfInput) + throws IOException, InterruptedException; + + /** + * Equivalent to {@code readFully(target, offset, length, false)}. + * + * @param target A target array into which data should be written. + * @param offset The offset into the target array at which to write. + * @param length The number of bytes to read from the input. + * @throws EOFException If the end of input was encountered. + * @throws IOException If an error occurs reading from the input. + * @throws InterruptedException If the thread is interrupted. + */ + void readFully(byte[] target, int offset, int length) throws IOException, InterruptedException; + + /** + * Like {@link #readFully(byte[], int, int)}, except the data is skipped instead of read. + *

+ * Encountering the end of input is always considered an error, and will result in an + * {@link EOFException} being thrown. + * + * @param length The number of bytes to skip from the input. + * @throws EOFException If the end of input was encountered. + * @throws IOException If an error occurs reading from the input. + * @throws InterruptedException If the thread is interrupted. + */ + void skipFully(int length) throws IOException, InterruptedException; + + /** + * The current position (byte offset) in the stream. + * + * @return The position (byte offset) in the stream. + */ + long getPosition(); + + /** + * Returns the length of the source stream, or {@link C#LENGTH_UNBOUNDED} if it is unknown. + * + * @return The length of the source stream, or {@link C#LENGTH_UNBOUNDED}. + */ + long getLength(); + +} diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ExtractorOutput.java b/library/src/main/java/com/google/android/exoplayer/extractor/ExtractorOutput.java new file mode 100644 index 0000000000..09bc4704c0 --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ExtractorOutput.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.extractor; + +/** + * Receives stream level data extracted by an {@link Extractor}. + */ +public interface ExtractorOutput { + + /** + * Invoked when the {@link Extractor} identifies the existence of a track in the stream. + *

+ * Returns a {@link TrackOutput} that will receive track level data belonging to the track. + * + * @param trackId A track identifier. + * @return The {@link TrackOutput} that should receive track level data belonging to the track. + */ + TrackOutput track(int trackId); + + /** + * Invoked when all tracks have been identified, meaning that {@link #track(int)} will not be + * invoked again. + */ + void endTracks(); + +} diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/RollingSampleBuffer.java b/library/src/main/java/com/google/android/exoplayer/extractor/RollingSampleBuffer.java index e34474d9ba..e073c1b099 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/RollingSampleBuffer.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/RollingSampleBuffer.java @@ -19,7 +19,6 @@ import com.google.android.exoplayer.C; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.upstream.DataSource; -import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.ParsableByteArray; import java.io.IOException; @@ -48,8 +47,6 @@ import java.util.concurrent.ConcurrentLinkedQueue; private long totalBytesWritten; private byte[] lastFragment; private int lastFragmentOffset; - private long pendingSampleTimeUs; - private long pendingSampleOffset; public RollingSampleBuffer(BufferPool bufferPool) { this.fragmentPool = bufferPool; @@ -71,7 +68,8 @@ import java.util.concurrent.ConcurrentLinkedQueue; /** * Fills {@code holder} with information about the current sample, but does not write its data. *

- * The fields set are {SampleHolder#size}, {SampleHolder#timeUs} and {SampleHolder#flags}. + * The fields set are {@link SampleHolder#size}, {@link SampleHolder#timeUs} and + * {@link SampleHolder#flags}. * * @param holder The holder into which the current sample information should be written. * @return True if the holder was filled. False if there is no current sample. @@ -92,10 +90,15 @@ import java.util.concurrent.ConcurrentLinkedQueue; * Reads the current sample, advancing the read index to the next sample. * * @param sampleHolder The holder into which the current sample should be written. + * @return True if a sample was read. False if there is no current sample. */ - public void readSample(SampleHolder sampleHolder) { + public boolean readSample(SampleHolder sampleHolder) { // Write the sample information into the holder and extrasHolder. - infoQueue.peekSample(sampleHolder, extrasHolder); + boolean haveSample = infoQueue.peekSample(sampleHolder, extrasHolder); + if (!haveSample) { + return false; + } + // Read encryption data if the sample is encrypted. if (sampleHolder.isEncrypted()) { readEncryptionData(sampleHolder, extrasHolder); @@ -110,6 +113,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; // Advance the read head. long nextOffset = infoQueue.moveToNextSample(); dropFragmentsTo(nextOffset); + return true; } /** @@ -250,16 +254,12 @@ import java.util.concurrent.ConcurrentLinkedQueue; // Called by the loading thread. /** - * Indicates the start point for the next sample. + * Returns the current write position in the rolling buffer. * - * @param sampleTimeUs The sample timestamp. - * @param offset The offset of the sample's data, relative to the total number of bytes written - * to the buffer. Must be negative or zero. + * @return The current write position. */ - public void startSample(long sampleTimeUs, int offset) { - Assertions.checkState(offset <= 0); - pendingSampleTimeUs = sampleTimeUs; - pendingSampleOffset = totalBytesWritten + offset; + public long getWritePosition() { + return totalBytesWritten; } /** @@ -314,16 +314,15 @@ import java.util.concurrent.ConcurrentLinkedQueue; /** * Indicates the end point for the current sample, making it available for consumption. * + * @param sampleTimeUs The sample timestamp. * @param flags Flags that accompany the sample. See {@link SampleHolder#flags}. - * @param offset The offset of the first byte after the end of the sample's data, relative to - * the total number of bytes written to the buffer. Must be negative or zero. + * @param position The position of the sample data in the rolling buffer. + * @param size The size of the sample, in bytes. * @param encryptionKey The encryption key associated with the sample, or null. */ - public void commitSample(int flags, int offset, byte[] encryptionKey) { - Assertions.checkState(offset <= 0); - int sampleSize = (int) (totalBytesWritten + offset - pendingSampleOffset); - infoQueue.commitSample(pendingSampleTimeUs, pendingSampleOffset, sampleSize, flags, - encryptionKey); + public void commitSample(long sampleTimeUs, int flags, long position, int size, + byte[] encryptionKey) { + infoQueue.commitSample(sampleTimeUs, flags, position, size, encryptionKey); } /** @@ -398,7 +397,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; // Called by the loading thread. - public synchronized void commitSample(long timeUs, long offset, int size, int sampleFlags, + public synchronized void commitSample(long timeUs, int sampleFlags, long offset, int size, byte[] encryptionKey) { timesUs[writeIndex] = timeUs; offsets[writeIndex] = offset; diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/TrackOutput.java b/library/src/main/java/com/google/android/exoplayer/extractor/TrackOutput.java new file mode 100644 index 0000000000..1ad55e50db --- /dev/null +++ b/library/src/main/java/com/google/android/exoplayer/extractor/TrackOutput.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer.extractor; + +import com.google.android.exoplayer.MediaFormat; +import com.google.android.exoplayer.SampleHolder; +import com.google.android.exoplayer.util.ParsableByteArray; + +/** + * Receives track level data extracted by an {@link Extractor}. + */ +public interface TrackOutput { + + /** + * Invoked when the {@link MediaFormat} of the track has been extracted from the stream. + * + * @param format The extracted {@link MediaFormat}. + */ + void format(MediaFormat format); + + /** + * Invoked to write sample data to the output. + * + * @param data A {@link ParsableByteArray} from which to read the sample data. + * @param length The number of bytes to read. + */ + void sampleData(ParsableByteArray data, int length); + + /** + * Invoked when metadata associated with a sample has been extracted from the stream. + *

+ * The corresponding sample data will have already been passed to the output via calls to + * {@link #sampleData(ParsableByteArray, int)}. + * + * @param timeUs The media timestamp associated with the sample, in microseconds. + * @param flags Flags associated with the sample. See {@link SampleHolder#flags}. + * @param size The size of the sample data, in bytes. + * @param offset The number of bytes that have been passed to + * {@link #sampleData(ParsableByteArray, int)} since the last byte belonging to the sample + * whose metadata is being passed. + * @param encryptionKey The encryption key associated with the sample. May be null. + */ + void sampleMetadata(long timeUs, int flags, int size, int offset, byte[] encryptionKey); + +} diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsExtractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsExtractor.java index 46bf20e744..d6c3ab73ab 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsExtractor.java @@ -16,6 +16,8 @@ package com.google.android.exoplayer.extractor.ts; import com.google.android.exoplayer.extractor.Extractor; +import com.google.android.exoplayer.extractor.ExtractorInput; +import com.google.android.exoplayer.extractor.ExtractorOutput; import com.google.android.exoplayer.util.ParsableByteArray; import java.io.IOException; @@ -42,16 +44,17 @@ public class AdtsExtractor implements Extractor { } @Override - public void init(TrackOutputBuilder output) { - adtsReader = new AdtsReader(output.buildOutput(0)); - output.allOutputsBuilt(); + public void init(ExtractorOutput output) { + adtsReader = new AdtsReader(output.track(0)); + output.endTracks(); } @Override - public void read(ExtractorInput input) throws IOException, InterruptedException { + public int read(ExtractorInput input) + throws IOException, InterruptedException { int bytesRead = input.read(packetBuffer.data, 0, MAX_PACKET_SIZE); if (bytesRead == -1) { - return; + return RESULT_END_OF_INPUT; } // Feed whatever data we have to the reader, regardless of whether the read finished or not. @@ -62,6 +65,7 @@ public class AdtsExtractor implements Extractor { // unnecessary to copy the data through packetBuffer. adtsReader.consume(packetBuffer, firstSampleTimestamp, firstPacket); firstPacket = false; + return RESULT_CONTINUE; } } diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsReader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsReader.java index 397485a85b..5165f089f8 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsReader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/AdtsReader.java @@ -17,7 +17,7 @@ package com.google.android.exoplayer.extractor.ts; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.extractor.Extractor.TrackOutput; +import com.google.android.exoplayer.extractor.TrackOutput; import com.google.android.exoplayer.util.CodecSpecificDataUtil; import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableBitArray; @@ -48,7 +48,8 @@ import java.util.Collections; private boolean lastByteWasFF; private boolean hasCrc; - // Parsed from the header. + // Used when parsing the header. + private boolean hasOutputFormat; private long frameDurationUs; private int sampleSize; @@ -78,17 +79,16 @@ import java.util.Collections; int targetLength = hasCrc ? HEADER_SIZE + CRC_SIZE : HEADER_SIZE; if (continueRead(data, adtsScratch.getData(), targetLength)) { parseHeader(); - output.startSample(timeUs, 0); bytesRead = 0; state = STATE_READING_SAMPLE; } break; case STATE_READING_SAMPLE: int bytesToRead = Math.min(data.bytesLeft(), sampleSize - bytesRead); - output.appendData(data, bytesToRead); + output.sampleData(data, bytesToRead); bytesRead += bytesToRead; if (bytesRead == sampleSize) { - output.commitSample(C.SAMPLE_FLAG_SYNC, 0, null); + output.sampleMetadata(timeUs, C.SAMPLE_FLAG_SYNC, sampleSize, 0, null); timeUs += frameDurationUs; bytesRead = 0; state = STATE_FINDING_SYNC; @@ -152,7 +152,7 @@ import java.util.Collections; private void parseHeader() { adtsScratch.setPosition(0); - if (!output.hasFormat()) { + if (!hasOutputFormat) { int audioObjectType = adtsScratch.readBits(2) + 1; int sampleRateIndex = adtsScratch.readBits(4); adtsScratch.skipBits(1); @@ -167,7 +167,8 @@ import java.util.Collections; MediaFormat.NO_VALUE, audioParams.second, audioParams.first, Collections.singletonList(audioSpecificConfig)); frameDurationUs = (C.MICROS_PER_SECOND * 1024L) / mediaFormat.sampleRate; - output.setFormat(mediaFormat); + output.format(mediaFormat); + hasOutputFormat = true; } else { adtsScratch.skipBits(10); } diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/ElementaryStreamReader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/ElementaryStreamReader.java index 16393a420b..d2df2aef14 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/ElementaryStreamReader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/ElementaryStreamReader.java @@ -15,7 +15,7 @@ */ package com.google.android.exoplayer.extractor.ts; -import com.google.android.exoplayer.extractor.Extractor.TrackOutput; +import com.google.android.exoplayer.extractor.TrackOutput; import com.google.android.exoplayer.util.ParsableByteArray; /** diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java index 2ad5634b26..7f4336f085 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java @@ -17,7 +17,7 @@ package com.google.android.exoplayer.extractor.ts; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.extractor.Extractor.TrackOutput; +import com.google.android.exoplayer.extractor.TrackOutput; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.H264Util; import com.google.android.exoplayer.util.MimeTypes; @@ -46,9 +46,15 @@ import java.util.List; private final NalUnitTargetBuffer sei; private final ParsableByteArray seiWrapper; + private boolean hasOutputFormat; private int scratchEscapeCount; private int[] scratchEscapePositions; + + private boolean writingSample; private boolean isKeyframe; + private long samplePosition; + private long sampleTimeUs; + private long totalBytesWritten; public H264Reader(TrackOutput output, SeiReader seiReader) { super(output); @@ -69,7 +75,8 @@ import java.util.List; byte[] dataArray = data.data; // Append the data to the buffer. - output.appendData(data, data.bytesLeft()); + totalBytesWritten += data.bytesLeft(); + output.sampleData(data, data.bytesLeft()); // Scan the appended data, processing NAL units as they are encountered while (offset < limit) { @@ -85,15 +92,20 @@ import java.util.List; } int nalUnitType = H264Util.getNalUnitType(dataArray, nextNalUnitOffset); - int nalUnitOffsetInData = nextNalUnitOffset - limit; + int bytesWrittenPastNalUnit = limit - nextNalUnitOffset; if (nalUnitType == NAL_UNIT_TYPE_AUD) { - if (output.isWritingSample()) { - if (isKeyframe && !output.hasFormat() && sps.isCompleted() && pps.isCompleted()) { + if (writingSample) { + if (isKeyframe && !hasOutputFormat && sps.isCompleted() && pps.isCompleted()) { parseMediaFormat(sps, pps); } - output.commitSample(isKeyframe ? C.SAMPLE_FLAG_SYNC : 0, nalUnitOffsetInData, null); + int flags = isKeyframe ? C.SAMPLE_FLAG_SYNC : 0; + int size = (int) (totalBytesWritten - samplePosition) - bytesWrittenPastNalUnit; + output.sampleMetadata(sampleTimeUs, flags, size, bytesWrittenPastNalUnit, null); + writingSample = false; } - output.startSample(pesTimeUs, nalUnitOffsetInData); + writingSample = true; + samplePosition = totalBytesWritten - bytesWrittenPastNalUnit; + sampleTimeUs = pesTimeUs; isKeyframe = false; } else if (nalUnitType == NAL_UNIT_TYPE_IDR) { isKeyframe = true; @@ -120,7 +132,7 @@ import java.util.List; } private void feedNalUnitTargetBuffersStart(int nalUnitType) { - if (!output.hasFormat()) { + if (!hasOutputFormat) { sps.startNalUnit(nalUnitType); pps.startNalUnit(nalUnitType); } @@ -128,7 +140,7 @@ import java.util.List; } private void feedNalUnitTargetBuffersData(byte[] dataArray, int offset, int limit) { - if (!output.hasFormat()) { + if (!hasOutputFormat) { sps.appendToNalUnit(dataArray, offset, limit); pps.appendToNalUnit(dataArray, offset, limit); } @@ -232,9 +244,9 @@ import java.util.List; frameHeight -= (frameCropTopOffset + frameCropBottomOffset) * cropUnitY; } - // Set the format. - output.setFormat(MediaFormat.createVideoFormat(MimeTypes.VIDEO_H264, MediaFormat.NO_VALUE, - frameWidth, frameHeight, initializationData)); + output.format(MediaFormat.createVideoFormat(MimeTypes.VIDEO_H264, MediaFormat.NO_VALUE, + C.UNKNOWN_TIME_US, frameWidth, frameHeight, initializationData)); + hasOutputFormat = true; } private void skipScalingList(ParsableBitArray bitArray, int size) { diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/Id3Reader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/Id3Reader.java index 4d93b2df5b..e5a9d355ae 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/Id3Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/Id3Reader.java @@ -17,7 +17,7 @@ package com.google.android.exoplayer.extractor.ts; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.extractor.Extractor.TrackOutput; +import com.google.android.exoplayer.extractor.TrackOutput; import com.google.android.exoplayer.util.ParsableByteArray; /** @@ -25,24 +25,32 @@ import com.google.android.exoplayer.util.ParsableByteArray; */ /* package */ class Id3Reader extends ElementaryStreamReader { + private boolean writingSample; + private long sampleTimeUs; + private int sampleSize; + public Id3Reader(TrackOutput output) { super(output); - output.setFormat(MediaFormat.createId3Format()); + output.format(MediaFormat.createId3Format()); } @Override public void consume(ParsableByteArray data, long pesTimeUs, boolean startOfPacket) { if (startOfPacket) { - output.startSample(pesTimeUs, 0); + writingSample = true; + sampleTimeUs = pesTimeUs; + sampleSize = 0; } - if (output.isWritingSample()) { - output.appendData(data, data.bytesLeft()); + if (writingSample) { + sampleSize += data.bytesLeft(); + output.sampleData(data, data.bytesLeft()); } } @Override public void packetFinished() { - output.commitSample(C.SAMPLE_FLAG_SYNC, 0, null); + output.sampleMetadata(sampleTimeUs, C.SAMPLE_FLAG_SYNC, sampleSize, 0, null); + writingSample = false; } } diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/SeiReader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/SeiReader.java index a71b629ebf..66d6819832 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/SeiReader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/SeiReader.java @@ -17,7 +17,7 @@ package com.google.android.exoplayer.extractor.ts; import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; -import com.google.android.exoplayer.extractor.Extractor.TrackOutput; +import com.google.android.exoplayer.extractor.TrackOutput; import com.google.android.exoplayer.text.eia608.Eia608Parser; import com.google.android.exoplayer.util.ParsableByteArray; @@ -31,7 +31,7 @@ import com.google.android.exoplayer.util.ParsableByteArray; public SeiReader(TrackOutput output) { super(output); - output.setFormat(MediaFormat.createEia608Format()); + output.format(MediaFormat.createEia608Format()); } @Override @@ -55,9 +55,8 @@ import com.google.android.exoplayer.util.ParsableByteArray; } while (b == 0xFF); // Process the payload. We only support EIA-608 payloads currently. if (Eia608Parser.isSeiMessageEia608(payloadType, payloadSize, seiBuffer)) { - output.startSample(pesTimeUs, 0); - output.appendData(seiBuffer, payloadSize); - output.commitSample(C.SAMPLE_FLAG_SYNC, 0, null); + output.sampleData(seiBuffer, payloadSize); + output.sampleMetadata(pesTimeUs, C.SAMPLE_FLAG_SYNC, payloadSize, 0, null); } else { seiBuffer.skip(payloadSize); } diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/TsExtractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/TsExtractor.java index 6fa5aa95c7..f735831085 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/TsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/TsExtractor.java @@ -17,6 +17,8 @@ package com.google.android.exoplayer.extractor.ts; import com.google.android.exoplayer.C; import com.google.android.exoplayer.extractor.Extractor; +import com.google.android.exoplayer.extractor.ExtractorInput; +import com.google.android.exoplayer.extractor.ExtractorOutput; import com.google.android.exoplayer.util.ParsableBitArray; import com.google.android.exoplayer.util.ParsableByteArray; @@ -50,7 +52,7 @@ public final class TsExtractor implements Extractor { private final ParsableBitArray tsScratch; // Accessed only by the loading thread. - private TrackOutputBuilder output; + private ExtractorOutput output; private long timestampOffsetUs; private long lastPts; @@ -65,21 +67,22 @@ public final class TsExtractor implements Extractor { } @Override - public void init(TrackOutputBuilder output) { + public void init(ExtractorOutput output) { this.output = output; } @Override - public void read(ExtractorInput input) throws IOException, InterruptedException { - if (!input.readFully(tsPacketBuffer.data, 0, TS_PACKET_SIZE)) { - return; + public int read(ExtractorInput input) + throws IOException, InterruptedException { + if (!input.readFully(tsPacketBuffer.data, 0, TS_PACKET_SIZE, true)) { + return RESULT_END_OF_INPUT; } tsPacketBuffer.setPosition(0); tsPacketBuffer.setLimit(TS_PACKET_SIZE); int syncByte = tsPacketBuffer.readUnsignedByte(); if (syncByte != TS_SYNC_BYTE) { - return; + return RESULT_CONTINUE; } tsPacketBuffer.readBytes(tsScratch, 3); @@ -105,6 +108,8 @@ public final class TsExtractor implements Extractor { payloadReader.consume(tsPacketBuffer, payloadUnitStartIndicator, output); } } + + return RESULT_CONTINUE; } /** @@ -140,7 +145,7 @@ public final class TsExtractor implements Extractor { private abstract static class TsPayloadReader { public abstract void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, - TrackOutputBuilder output); + ExtractorOutput output); } @@ -157,7 +162,7 @@ public final class TsExtractor implements Extractor { @Override public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, - TrackOutputBuilder output) { + ExtractorOutput output) { // Skip pointer. if (payloadUnitStartIndicator) { int pointerField = data.readUnsignedByte(); @@ -197,7 +202,7 @@ public final class TsExtractor implements Extractor { @Override public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, - TrackOutputBuilder output) { + ExtractorOutput output) { // Skip pointer. if (payloadUnitStartIndicator) { int pointerField = data.readUnsignedByte(); @@ -241,16 +246,16 @@ public final class TsExtractor implements Extractor { ElementaryStreamReader pesPayloadReader = null; switch (streamType) { case TS_STREAM_TYPE_AAC: - pesPayloadReader = new AdtsReader(output.buildOutput(TS_STREAM_TYPE_AAC)); + pesPayloadReader = new AdtsReader(output.track(TS_STREAM_TYPE_AAC)); break; case TS_STREAM_TYPE_H264: - SeiReader seiReader = new SeiReader(output.buildOutput(TS_STREAM_TYPE_EIA608)); + SeiReader seiReader = new SeiReader(output.track(TS_STREAM_TYPE_EIA608)); streamReaders.put(TS_STREAM_TYPE_EIA608, seiReader); - pesPayloadReader = new H264Reader(output.buildOutput(TS_STREAM_TYPE_H264), + pesPayloadReader = new H264Reader(output.track(TS_STREAM_TYPE_H264), seiReader); break; case TS_STREAM_TYPE_ID3: - pesPayloadReader = new Id3Reader(output.buildOutput(TS_STREAM_TYPE_ID3)); + pesPayloadReader = new Id3Reader(output.track(TS_STREAM_TYPE_ID3)); break; } @@ -260,7 +265,7 @@ public final class TsExtractor implements Extractor { } } - output.allOutputsBuilt(); + output.endTracks(); } } @@ -300,7 +305,7 @@ public final class TsExtractor implements Extractor { @Override public void consume(ParsableByteArray data, boolean payloadUnitStartIndicator, - TrackOutputBuilder output) { + ExtractorOutput output) { if (payloadUnitStartIndicator) { switch (state) { case STATE_FINDING_HEADER: diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsExtractorWrapper.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsExtractorWrapper.java index 628e216418..a340183ff0 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsExtractorWrapper.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsExtractorWrapper.java @@ -17,10 +17,11 @@ package com.google.android.exoplayer.hls; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; +import com.google.android.exoplayer.extractor.DefaultTrackOutput; import com.google.android.exoplayer.extractor.Extractor; -import com.google.android.exoplayer.extractor.SampleQueue; -import com.google.android.exoplayer.extractor.Extractor.ExtractorInput; -import com.google.android.exoplayer.extractor.Extractor.TrackOutput; +import com.google.android.exoplayer.extractor.ExtractorInput; +import com.google.android.exoplayer.extractor.ExtractorOutput; +import com.google.android.exoplayer.extractor.TrackOutput; import com.google.android.exoplayer.upstream.BufferPool; import com.google.android.exoplayer.util.Assertions; @@ -31,25 +32,24 @@ import java.io.IOException; /** * Wraps a {@link Extractor}, adding functionality to enable reading of the extracted samples. */ -public final class HlsExtractorWrapper implements Extractor.TrackOutputBuilder { +public final class HlsExtractorWrapper implements ExtractorOutput { private final BufferPool bufferPool; private final Extractor extractor; - private final SparseArray sampleQueues; + private final SparseArray sampleQueues; private final boolean shouldSpliceIn; - private volatile boolean outputsBuilt; + private volatile boolean tracksBuilt; // Accessed only by the consuming thread. private boolean prepared; private boolean spliceConfigured; - public HlsExtractorWrapper(BufferPool bufferPool, Extractor extractor, - boolean shouldSpliceIn) { + public HlsExtractorWrapper(BufferPool bufferPool, Extractor extractor, boolean shouldSpliceIn) { this.bufferPool = bufferPool; this.extractor = extractor; this.shouldSpliceIn = shouldSpliceIn; - sampleQueues = new SparseArray(); + sampleQueues = new SparseArray(); extractor.init(this); } @@ -76,8 +76,8 @@ public final class HlsExtractorWrapper implements Extractor.TrackOutputBuilder { boolean spliceConfigured = true; int trackCount = getTrackCount(); for (int i = 0; i < trackCount; i++) { - SampleQueue currentSampleQueue = sampleQueues.valueAt(i); - SampleQueue nextSampleQueue = nextExtractor.sampleQueues.valueAt(i); + DefaultTrackOutput currentSampleQueue = sampleQueues.valueAt(i); + DefaultTrackOutput nextSampleQueue = nextExtractor.sampleQueues.valueAt(i); spliceConfigured &= currentSampleQueue.configureSpliceTo(nextSampleQueue); } this.spliceConfigured = spliceConfigured; @@ -113,7 +113,7 @@ public final class HlsExtractorWrapper implements Extractor.TrackOutputBuilder { * @return True if the extractor is prepared. False otherwise. */ public boolean isPrepared() { - if (!prepared && outputsBuilt) { + if (!prepared && tracksBuilt) { for (int i = 0; i < sampleQueues.size(); i++) { if (!sampleQueues.valueAt(i).hasFormat()) { return false; @@ -188,25 +188,27 @@ public final class HlsExtractorWrapper implements Extractor.TrackOutputBuilder { * Reads from the provided {@link ExtractorInput}. * * @param input The {@link ExtractorInput} from which to read. + * @return One of {@link Extractor#RESULT_CONTINUE} and {@link Extractor#RESULT_END_OF_INPUT}. * @throws IOException If an error occurred reading from the source. * @throws InterruptedException If the thread was interrupted. */ - public void read(ExtractorInput input) throws IOException, InterruptedException { - extractor.read(input); + public int read(ExtractorInput input) throws IOException, InterruptedException { + int result = extractor.read(input); + return result; } // ExtractorOutput implementation. @Override - public TrackOutput buildOutput(int id) { - SampleQueue sampleQueue = new SampleQueue(bufferPool); + public TrackOutput track(int id) { + DefaultTrackOutput sampleQueue = new DefaultTrackOutput(bufferPool); sampleQueues.put(id, sampleQueue); return sampleQueue; } @Override - public void allOutputsBuilt() { - this.outputsBuilt = true; + public void endTracks() { + this.tracksBuilt = true; } } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java b/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java index fb1d0914c5..5a639f9fad 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/TsChunk.java @@ -15,8 +15,9 @@ */ package com.google.android.exoplayer.hls; -import com.google.android.exoplayer.extractor.Extractor.ExtractorInput; -import com.google.android.exoplayer.extractor.ts.DataSourceExtractorInput; +import com.google.android.exoplayer.extractor.DefaultExtractorInput; +import com.google.android.exoplayer.extractor.Extractor; +import com.google.android.exoplayer.extractor.ExtractorInput; import com.google.android.exoplayer.upstream.DataSource; import com.google.android.exoplayer.upstream.DataSpec; @@ -101,9 +102,9 @@ public final class TsChunk extends HlsChunk { @Override public void load() throws IOException, InterruptedException { - ExtractorInput input = new DataSourceExtractorInput(dataSource, 0); + ExtractorInput input; try { - dataSource.open(dataSpec); + input = new DefaultExtractorInput(dataSource, 0, dataSource.open(dataSpec)); // If we previously fed part of this chunk to the extractor, skip it this time. // TODO: Ideally we'd construct a dataSpec that only loads the remainder of the data here, // rather than loading the whole chunk again and then skipping data we previously loaded. To @@ -111,12 +112,12 @@ public final class TsChunk extends HlsChunk { // encrypted with AES, for which we'll need to modify the way that decryption is performed. input.skipFully(loadPosition); try { - while (!input.isEnded() && !loadCanceled) { - extractor.read(input); + int result = Extractor.RESULT_CONTINUE; + while (result == Extractor.RESULT_CONTINUE && !loadCanceled) { + result = extractor.read(input); } } finally { loadPosition = (int) input.getPosition(); - loadFinished = !loadCanceled; } } finally { dataSource.close(); From 53a47524a1d6f81487cf16db245cb8fc066e6410 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Sat, 11 Apr 2015 00:59:00 +0100 Subject: [PATCH 67/69] Support non-square pixels in HLS. Github issue: #375 --- .../exoplayer/extractor/ts/H264Reader.java | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java index 7f4336f085..4627cb6526 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/H264Reader.java @@ -24,6 +24,8 @@ import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableBitArray; import com.google.android.exoplayer.util.ParsableByteArray; +import android.util.Log; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -33,11 +35,33 @@ import java.util.List; */ /* package */ class H264Reader extends ElementaryStreamReader { + private static final String TAG = "H264Reader"; + private static final int NAL_UNIT_TYPE_IDR = 5; private static final int NAL_UNIT_TYPE_SEI = 6; private static final int NAL_UNIT_TYPE_SPS = 7; private static final int NAL_UNIT_TYPE_PPS = 8; private static final int NAL_UNIT_TYPE_AUD = 9; + private static final int EXTENDED_SAR = 0xFF; + private static final float[] ASPECT_RATIO_IDC_VALUES = new float[] { + 1f /* Unspecified. Assume square */, + 1f, + 12f / 11f, + 10f / 11f, + 16f / 11f, + 40f / 33f, + 24f / 11f, + 20f / 11f, + 32f / 11f, + 80f / 33f, + 18f / 11f, + 15f / 11f, + 64f / 33f, + 160f / 99f, + 4f / 3f, + 3f / 2f, + 2f + }; private final SeiReader seiReader; private final boolean[] prefixFlags; @@ -244,8 +268,28 @@ import java.util.List; frameHeight -= (frameCropTopOffset + frameCropBottomOffset) * cropUnitY; } + float pixelWidthHeightRatio = 1; + boolean vuiParametersPresentFlag = bitArray.readBit(); + if (vuiParametersPresentFlag) { + boolean aspectRatioInfoPresentFlag = bitArray.readBit(); + if (aspectRatioInfoPresentFlag) { + int aspectRatioIdc = bitArray.readBits(8); + if (aspectRatioIdc == EXTENDED_SAR) { + int sarWidth = bitArray.readBits(16); + int sarHeight = bitArray.readBits(16); + if (sarWidth != 0 && sarHeight != 0) { + pixelWidthHeightRatio = (float) sarWidth / sarHeight; + } + } else if (aspectRatioIdc < ASPECT_RATIO_IDC_VALUES.length) { + pixelWidthHeightRatio = ASPECT_RATIO_IDC_VALUES[aspectRatioIdc]; + } else { + Log.w(TAG, "Unexpected aspect_ratio_idc value: " + aspectRatioIdc); + } + } + } + output.format(MediaFormat.createVideoFormat(MimeTypes.VIDEO_H264, MediaFormat.NO_VALUE, - C.UNKNOWN_TIME_US, frameWidth, frameHeight, initializationData)); + C.UNKNOWN_TIME_US, frameWidth, frameHeight, pixelWidthHeightRatio, initializationData)); hasOutputFormat = true; } From da656e6f26ac49e88f5abc5a7a90aa1bbf5c3a3e Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Sat, 11 Apr 2015 01:07:41 +0100 Subject: [PATCH 68/69] More steps towards unified extractors. --- .../extractor/DefaultTrackOutput.java | 42 ++++- .../extractor/RollingSampleBuffer.java | 175 ++++++++++++------ .../exoplayer/hls/HlsExtractorWrapper.java | 10 +- .../exoplayer/hls/HlsSampleSource.java | 6 +- 4 files changed, 161 insertions(+), 72 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/DefaultTrackOutput.java b/library/src/main/java/com/google/android/exoplayer/extractor/DefaultTrackOutput.java index 5455e9a398..ba69ae0397 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/DefaultTrackOutput.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/DefaultTrackOutput.java @@ -24,9 +24,8 @@ import com.google.android.exoplayer.util.ParsableByteArray; import java.io.IOException; /** - * Wraps a {@link RollingSampleBuffer}, adding higher level functionality such as enforcing that - * the first sample returned from the queue is a keyframe, allowing splicing to another queue, and - * so on. + * A {@link TrackOutput} that buffers extracted samples in a queue, and allows for consumption from + * that queue. */ public final class DefaultTrackOutput implements TrackOutput { @@ -51,12 +50,35 @@ public final class DefaultTrackOutput implements TrackOutput { largestParsedTimestampUs = Long.MIN_VALUE; } - public void release() { - rollingBuffer.release(); + // Called by the consuming thread, but only when there is no loading thread. + + /** + * Clears the queue, returning all allocations to the allocator. + */ + public void clear() { + rollingBuffer.clear(); + needKeyframe = true; + lastReadTimeUs = Long.MIN_VALUE; + spliceOutTimeUs = Long.MIN_VALUE; + largestParsedTimestampUs = Long.MIN_VALUE; + } + + /** + * Returns the current absolute write index. + */ + public int getWriteIndex() { + return rollingBuffer.getWriteIndex(); } // Called by the consuming thread. + /** + * Returns the current absolute read index. + */ + public int getReadIndex() { + return rollingBuffer.getReadIndex(); + } + /** * True if the output has received a format. False otherwise. */ @@ -64,14 +86,24 @@ public final class DefaultTrackOutput implements TrackOutput { return format != null; } + /** + * The format most recently received by the output, or null if a format has yet to be received. + */ public MediaFormat getFormat() { return format; } + /** + * The largest timestamp of any sample received by the output, or {@link Long#MIN_VALUE} if a + * sample has yet to be received. + */ public long getLargestParsedTimestampUs() { return largestParsedTimestampUs; } + /** + * True if at least one sample can be read from the queue. False otherwise. + */ public boolean isEmpty() { return !advanceToEligibleSample(); } diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/RollingSampleBuffer.java b/library/src/main/java/com/google/android/exoplayer/extractor/RollingSampleBuffer.java index e073c1b099..446f64df4b 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/RollingSampleBuffer.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/RollingSampleBuffer.java @@ -55,16 +55,41 @@ import java.util.concurrent.ConcurrentLinkedQueue; dataQueue = new ConcurrentLinkedQueue(); extrasHolder = new SampleExtrasHolder(); scratch = new ParsableByteArray(INITIAL_SCRATCH_SIZE); + lastFragmentOffset = fragmentLength; } - public void release() { + // Called by the consuming thread, but only when there is no loading thread. + + /** + * Clears the buffer, returning all allocations to the allocator. + */ + public void clear() { + infoQueue.clear(); while (!dataQueue.isEmpty()) { fragmentPool.releaseDirect(dataQueue.remove()); } + totalBytesDropped = 0; + totalBytesWritten = 0; + lastFragment = null; + lastFragmentOffset = fragmentLength; + } + + /** + * Returns the current absolute write index. + */ + public int getWriteIndex() { + return infoQueue.getWriteIndex(); } // Called by the consuming thread. + /** + * Returns the current absolute read index. + */ + public int getReadIndex() { + return infoQueue.getReadIndex(); + } + /** * Fills {@code holder} with information about the current sample, but does not write its data. *

@@ -83,7 +108,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; */ public void skipSample() { long nextOffset = infoQueue.moveToNextSample(); - dropFragmentsTo(nextOffset); + dropDownstreamTo(nextOffset); } /** @@ -112,7 +137,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; } // Advance the read head. long nextOffset = infoQueue.moveToNextSample(); - dropFragmentsTo(nextOffset); + dropDownstreamTo(nextOffset); return true; } @@ -198,7 +223,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; private void readData(long absolutePosition, ByteBuffer target, int length) { int remaining = length; while (remaining > 0) { - dropFragmentsTo(absolutePosition); + dropDownstreamTo(absolutePosition); int positionInFragment = (int) (absolutePosition - totalBytesDropped); int toCopy = Math.min(remaining, fragmentLength - positionInFragment); target.put(dataQueue.peek(), positionInFragment, toCopy); @@ -216,14 +241,14 @@ import java.util.concurrent.ConcurrentLinkedQueue; */ // TODO: Consider reducing duplication of this method and the one above. private void readData(long absolutePosition, byte[] target, int length) { - int remaining = length; - while (remaining > 0) { - dropFragmentsTo(absolutePosition); + int bytesRead = 0; + while (bytesRead < length) { + dropDownstreamTo(absolutePosition); int positionInFragment = (int) (absolutePosition - totalBytesDropped); - int toCopy = Math.min(remaining, fragmentLength - positionInFragment); - System.arraycopy(dataQueue.peek(), positionInFragment, target, 0, toCopy); + int toCopy = Math.min(length - bytesRead, fragmentLength - positionInFragment); + System.arraycopy(dataQueue.peek(), positionInFragment, target, bytesRead, toCopy); absolutePosition += toCopy; - remaining -= toCopy; + bytesRead += toCopy; } } @@ -233,7 +258,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; * * @param absolutePosition The absolute position up to which fragments can be discarded. */ - private void dropFragmentsTo(long absolutePosition) { + private void dropDownstreamTo(long absolutePosition) { int relativePosition = (int) (absolutePosition - totalBytesDropped); int fragmentIndex = relativePosition / fragmentLength; for (int i = 0; i < fragmentIndex; i++) { @@ -266,24 +291,23 @@ import java.util.concurrent.ConcurrentLinkedQueue; * Appends data to the rolling buffer. * * @param dataSource The source from which to read. - * @param length The maximum length of the read. - * @return The number of bytes read, or -1 if the the end of the source has been reached. + * @param length The maximum length of the read, or {@link C#LENGTH_UNBOUNDED} if the caller does + * not wish to impose a limit. + * @return The number of bytes appended. * @throws IOException If an error occurs reading from the source. */ public int appendData(DataSource dataSource, int length) throws IOException { - int remainingWriteLength = length; - if (dataQueue.isEmpty() || lastFragmentOffset == fragmentLength) { - lastFragmentOffset = 0; - lastFragment = fragmentPool.allocateDirect(); - dataQueue.add(lastFragment); - } - int thisWriteLength = Math.min(remainingWriteLength, fragmentLength - lastFragmentOffset); - int bytesRead = dataSource.read(lastFragment, lastFragmentOffset, thisWriteLength); - if (bytesRead == -1) { - return -1; + ensureSpaceForWrite(); + int remainingFragmentCapacity = fragmentLength - lastFragmentOffset; + length = length != C.LENGTH_UNBOUNDED ? Math.min(length, remainingFragmentCapacity) + : remainingFragmentCapacity; + + int bytesRead = dataSource.read(lastFragment, lastFragmentOffset, length); + if (bytesRead == C.RESULT_END_OF_INPUT) { + return C.RESULT_END_OF_INPUT; } + lastFragmentOffset += bytesRead; - remainingWriteLength -= bytesRead; totalBytesWritten += bytesRead; return bytesRead; } @@ -294,15 +318,10 @@ import java.util.concurrent.ConcurrentLinkedQueue; * @param buffer A buffer containing the data to append. * @param length The length of the data to append. */ - // TODO: Consider reducing duplication of this method and the one above. public void appendData(ParsableByteArray buffer, int length) { int remainingWriteLength = length; while (remainingWriteLength > 0) { - if (dataQueue.isEmpty() || lastFragmentOffset == fragmentLength) { - lastFragmentOffset = 0; - lastFragment = fragmentPool.allocateDirect(); - dataQueue.add(lastFragment); - } + ensureSpaceForWrite(); int thisWriteLength = Math.min(remainingWriteLength, fragmentLength - lastFragmentOffset); buffer.readBytes(lastFragment, lastFragmentOffset, thisWriteLength); lastFragmentOffset += thisWriteLength; @@ -325,6 +344,17 @@ import java.util.concurrent.ConcurrentLinkedQueue; infoQueue.commitSample(sampleTimeUs, flags, position, size, encryptionKey); } + /** + * Ensures at least one byte can be written, allocating a new fragment if necessary. + */ + private void ensureSpaceForWrite() { + if (lastFragmentOffset == fragmentLength) { + lastFragmentOffset = 0; + lastFragment = fragmentPool.allocateDirect(); + dataQueue.add(lastFragment); + } + } + /** * Holds information about the samples in the rolling buffer. */ @@ -341,8 +371,9 @@ import java.util.concurrent.ConcurrentLinkedQueue; private byte[][] encryptionKeys; private int queueSize; - private int readIndex; - private int writeIndex; + private int absoluteReadIndex; + private int relativeReadIndex; + private int relativeWriteIndex; public InfoQueue() { capacity = SAMPLE_CAPACITY_INCREMENT; @@ -353,8 +384,34 @@ import java.util.concurrent.ConcurrentLinkedQueue; encryptionKeys = new byte[capacity][]; } + // Called by the consuming thread, but only when there is no loading thread. + + /** + * Clears the queue. + */ + public void clear() { + absoluteReadIndex = 0; + relativeReadIndex = 0; + relativeWriteIndex = 0; + queueSize = 0; + } + + /** + * Returns the current absolute write index. + */ + public int getWriteIndex() { + return absoluteReadIndex + queueSize; + } + // Called by the consuming thread. + /** + * Returns the current absolute read index. + */ + public int getReadIndex() { + return absoluteReadIndex; + } + /** * Fills {@code holder} with information about the current sample, but does not write its data. * The first entry in {@code offsetHolder} is filled with the absolute position of the sample's @@ -371,11 +428,11 @@ import java.util.concurrent.ConcurrentLinkedQueue; if (queueSize == 0) { return false; } - holder.timeUs = timesUs[readIndex]; - holder.size = sizes[readIndex]; - holder.flags = flags[readIndex]; - extrasHolder.offset = offsets[readIndex]; - extrasHolder.encryptionKeyId = encryptionKeys[readIndex]; + holder.timeUs = timesUs[relativeReadIndex]; + holder.size = sizes[relativeReadIndex]; + holder.flags = flags[relativeReadIndex]; + extrasHolder.offset = offsets[relativeReadIndex]; + extrasHolder.encryptionKeyId = encryptionKeys[relativeReadIndex]; return true; } @@ -387,23 +444,25 @@ import java.util.concurrent.ConcurrentLinkedQueue; */ public synchronized long moveToNextSample() { queueSize--; - int lastReadIndex = readIndex++; - if (readIndex == capacity) { + int lastReadIndex = relativeReadIndex++; + absoluteReadIndex++; + if (relativeReadIndex == capacity) { // Wrap around. - readIndex = 0; + relativeReadIndex = 0; } - return queueSize > 0 ? offsets[readIndex] : (sizes[lastReadIndex] + offsets[lastReadIndex]); + return queueSize > 0 ? offsets[relativeReadIndex] + : (sizes[lastReadIndex] + offsets[lastReadIndex]); } // Called by the loading thread. public synchronized void commitSample(long timeUs, int sampleFlags, long offset, int size, byte[] encryptionKey) { - timesUs[writeIndex] = timeUs; - offsets[writeIndex] = offset; - sizes[writeIndex] = size; - flags[writeIndex] = sampleFlags; - encryptionKeys[writeIndex] = encryptionKey; + timesUs[relativeWriteIndex] = timeUs; + offsets[relativeWriteIndex] = offset; + sizes[relativeWriteIndex] = size; + flags[relativeWriteIndex] = sampleFlags; + encryptionKeys[relativeWriteIndex] = encryptionKey; // Increment the write index. queueSize++; if (queueSize == capacity) { @@ -414,13 +473,13 @@ import java.util.concurrent.ConcurrentLinkedQueue; int[] newFlags = new int[newCapacity]; int[] newSizes = new int[newCapacity]; byte[][] newEncryptionKeys = new byte[newCapacity][]; - int beforeWrap = capacity - readIndex; - System.arraycopy(offsets, readIndex, newOffsets, 0, beforeWrap); - System.arraycopy(timesUs, readIndex, newTimesUs, 0, beforeWrap); - System.arraycopy(flags, readIndex, newFlags, 0, beforeWrap); - System.arraycopy(sizes, readIndex, newSizes, 0, beforeWrap); - System.arraycopy(encryptionKeys, readIndex, newEncryptionKeys, 0, beforeWrap); - int afterWrap = readIndex; + int beforeWrap = capacity - relativeReadIndex; + System.arraycopy(offsets, relativeReadIndex, newOffsets, 0, beforeWrap); + System.arraycopy(timesUs, relativeReadIndex, newTimesUs, 0, beforeWrap); + System.arraycopy(flags, relativeReadIndex, newFlags, 0, beforeWrap); + System.arraycopy(sizes, relativeReadIndex, newSizes, 0, beforeWrap); + System.arraycopy(encryptionKeys, relativeReadIndex, newEncryptionKeys, 0, beforeWrap); + int afterWrap = relativeReadIndex; System.arraycopy(offsets, 0, newOffsets, beforeWrap, afterWrap); System.arraycopy(timesUs, 0, newTimesUs, beforeWrap, afterWrap); System.arraycopy(flags, 0, newFlags, beforeWrap, afterWrap); @@ -431,15 +490,15 @@ import java.util.concurrent.ConcurrentLinkedQueue; flags = newFlags; sizes = newSizes; encryptionKeys = newEncryptionKeys; - readIndex = 0; - writeIndex = capacity; + relativeReadIndex = 0; + relativeWriteIndex = capacity; queueSize = capacity; capacity = newCapacity; } else { - writeIndex++; - if (writeIndex == capacity) { + relativeWriteIndex++; + if (relativeWriteIndex == capacity) { // Wrap around. - writeIndex = 0; + relativeWriteIndex = 0; } } } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsExtractorWrapper.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsExtractorWrapper.java index a340183ff0..dcdf7afe4a 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsExtractorWrapper.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsExtractorWrapper.java @@ -125,13 +125,11 @@ public final class HlsExtractorWrapper implements ExtractorOutput { } /** - * Releases the extractor, recycling any pending or incomplete samples to the sample pool. - *

- * This method should not be called whilst {@link #read(ExtractorInput)} is also being invoked. + * Clears queues for all tracks, returning all allocations to the buffer pool. */ - public void release() { + public void clear() { for (int i = 0; i < sampleQueues.size(); i++) { - sampleQueues.valueAt(i).release(); + sampleQueues.valueAt(i).clear(); } } @@ -140,7 +138,7 @@ public final class HlsExtractorWrapper implements ExtractorOutput { * * @return The largest timestamp, or {@link Long#MIN_VALUE} if no samples have been parsed. */ - public long getLargestSampleTimestamp() { + public long getLargestParsedTimestampUs() { long largestParsedTimestampUs = Long.MIN_VALUE; for (int i = 0; i < sampleQueues.size(); i++) { largestParsedTimestampUs = Math.max(largestParsedTimestampUs, diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java index 72f9e6d587..a069864272 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java @@ -261,7 +261,7 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { } else if (loadingFinished) { return TrackRenderer.END_OF_TRACK_US; } else { - long largestSampleTimestamp = extractors.getLast().getLargestSampleTimestamp(); + long largestSampleTimestamp = extractors.getLast().getLargestParsedTimestampUs(); return largestSampleTimestamp == Long.MIN_VALUE ? downstreamPositionUs : largestSampleTimestamp; } @@ -333,7 +333,7 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { HlsExtractorWrapper extractor = extractors.getFirst(); while (extractors.size() > 1 && !haveSamplesForEnabledTracks(extractor)) { // We're finished reading from the extractor for all tracks, and so can discard it. - extractors.removeFirst().release(); + extractors.removeFirst().clear(); extractor = extractors.getFirst(); } return extractor; @@ -382,7 +382,7 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { private void clearState() { for (int i = 0; i < extractors.size(); i++) { - extractors.get(i).release(); + extractors.get(i).clear(); } extractors.clear(); clearCurrentLoadable(); From 6c5af232303ccf8166c8d4bc8266984a8a5ced93 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Sat, 11 Apr 2015 01:12:40 +0100 Subject: [PATCH 69/69] Minor tweaks to HlsSampleSource. --- .../android/exoplayer/hls/HlsSampleSource.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java index a069864272..6f9d2387e7 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java @@ -83,6 +83,7 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { this.frameAccurateSeeking = frameAccurateSeeking; this.remainingReleaseCount = downstreamRendererCount; this.minLoadableRetryCount = minLoadableRetryCount; + this.pendingResetPositionUs = NO_RESET_PENDING; extractors = new LinkedList(); } @@ -190,7 +191,11 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { return DISCONTINUITY_READ; } - if (onlyReadDiscontinuity || isPendingReset() || extractors.isEmpty()) { + if (onlyReadDiscontinuity) { + return NOTHING_READ; + } + + if (isPendingReset()) { maybeThrowLoadableException(); return NOTHING_READ; } @@ -241,10 +246,11 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { Assertions.checkState(prepared); Assertions.checkState(enabledTrackCount > 0); lastSeekPositionUs = positionUs; - if (pendingResetPositionUs == positionUs || downstreamPositionUs == positionUs) { - downstreamPositionUs = positionUs; + if ((isPendingReset() ? pendingResetPositionUs : downstreamPositionUs) == positionUs) { return; } + + // TODO: Optimize the seek for the case where the position is already buffered. downstreamPositionUs = positionUs; for (int i = 0; i < pendingDiscontinuities.length; i++) { pendingDiscontinuities[i] = true; @@ -261,9 +267,9 @@ public class HlsSampleSource implements SampleSource, Loader.Callback { } else if (loadingFinished) { return TrackRenderer.END_OF_TRACK_US; } else { - long largestSampleTimestamp = extractors.getLast().getLargestParsedTimestampUs(); - return largestSampleTimestamp == Long.MIN_VALUE ? downstreamPositionUs - : largestSampleTimestamp; + long largestParsedTimestampUs = extractors.getLast().getLargestParsedTimestampUs(); + return largestParsedTimestampUs == Long.MIN_VALUE ? downstreamPositionUs + : largestParsedTimestampUs; } }

WebM is a subset of the EBML elements defined for Matroska. More information about EBML and * Matroska is available here. * More info about WebM is here. + * RFC on encrypted WebM can be found + * here. */ public final class WebmExtractor implements Extractor { @@ -47,6 +53,7 @@ public final class WebmExtractor implements Extractor { private static final String CODEC_ID_OPUS = "A_OPUS"; private static final int VORBIS_MAX_INPUT_SIZE = 8192; private static final int OPUS_MAX_INPUT_SIZE = 5760; + private static final int BLOCK_COUNTER_SIZE = 16; private static final int UNKNOWN = -1; // Element IDs @@ -80,23 +87,31 @@ public final class WebmExtractor implements Extractor { private static final int ID_CHANNELS = 0x9F; private static final int ID_SAMPLING_FREQUENCY = 0xB5; + private static final int ID_CONTENT_ENCODINGS = 0x6D80; + private static final int ID_CONTENT_ENCODING = 0x6240; + private static final int ID_CONTENT_ENCODING_ORDER = 0x5031; + private static final int ID_CONTENT_ENCODING_SCOPE = 0x5032; + private static final int ID_CONTENT_ENCODING_TYPE = 0x5033; + private static final int ID_CONTENT_ENCRYPTION = 0x5035; + private static final int ID_CONTENT_ENCRYPTION_ALGORITHM = 0x47E1; + private static final int ID_CONTENT_ENCRYPTION_KEY_ID = 0x47E2; + private static final int ID_CONTENT_ENCRYPTION_AES_SETTINGS = 0x47E7; + private static final int ID_CONTENT_ENCRYPTION_AES_SETTINGS_CIPHER_MODE = 0x47E8; + private static final int ID_CUES = 0x1C53BB6B; private static final int ID_CUE_POINT = 0xBB; private static final int ID_CUE_TIME = 0xB3; private static final int ID_CUE_TRACK_POSITIONS = 0xB7; private static final int ID_CUE_CLUSTER_POSITION = 0xF1; - // SimpleBlock Lacing Values private static final int LACING_NONE = 0; - private static final int LACING_XIPH = 1; - private static final int LACING_FIXED = 2; - private static final int LACING_EBML = 3; private static final int READ_TERMINATING_RESULTS = RESULT_NEED_MORE_DATA | RESULT_END_OF_STREAM | RESULT_READ_SAMPLE | RESULT_NEED_SAMPLE_HOLDER; private final EbmlReader reader; private final byte[] simpleBlockTimecodeAndFlags = new byte[3]; + private final HashMap psshInfo = new HashMap(); private SampleHolder sampleHolder; private int readResults; @@ -113,7 +128,9 @@ public final class WebmExtractor implements Extractor { private String codecId; private long codecDelayNs; private long seekPreRollNs; - private boolean seenAudioTrack; + private boolean isAudioTrack; + private boolean hasContentEncryption; + private byte[] encryptionKeyId; private long cuesSizeBytes = UNKNOWN; private long clusterTimecodeUs = UNKNOWN; private long simpleBlockTimecodeUs = UNKNOWN; @@ -183,8 +200,7 @@ public final class WebmExtractor implements Extractor { @Override public Map getPsshInfo() { - // TODO: Parse pssh data from Webm streams. - return null; + return psshInfo.isEmpty() ? null : psshInfo; } /* package */ int getElementType(int id) { @@ -197,6 +213,10 @@ public final class WebmExtractor implements Extractor { case ID_TRACK_ENTRY: case ID_AUDIO: case ID_VIDEO: + case ID_CONTENT_ENCODINGS: + case ID_CONTENT_ENCODING: + case ID_CONTENT_ENCRYPTION: + case ID_CONTENT_ENCRYPTION_AES_SETTINGS: case ID_CUES: case ID_CUE_POINT: case ID_CUE_TRACK_POSITIONS: @@ -211,12 +231,18 @@ public final class WebmExtractor implements Extractor { case ID_CODEC_DELAY: case ID_SEEK_PRE_ROLL: case ID_CHANNELS: + case ID_CONTENT_ENCODING_ORDER: + case ID_CONTENT_ENCODING_SCOPE: + case ID_CONTENT_ENCODING_TYPE: + case ID_CONTENT_ENCRYPTION_ALGORITHM: + case ID_CONTENT_ENCRYPTION_AES_SETTINGS_CIPHER_MODE: case ID_CUE_TIME: case ID_CUE_CLUSTER_POSITION: return EbmlReader.TYPE_UNSIGNED_INT; case ID_DOC_TYPE: case ID_CODEC_ID: return EbmlReader.TYPE_STRING; + case ID_CONTENT_ENCRYPTION_KEY_ID: case ID_SIMPLE_BLOCK: case ID_BLOCK: case ID_CODEC_PRIVATE: @@ -245,6 +271,12 @@ public final class WebmExtractor implements Extractor { cueTimesUs = new LongArray(); cueClusterPositions = new LongArray(); break; + case ID_CONTENT_ENCODING: + // TODO: check and fail if more than one content encoding is present. + break; + case ID_CONTENT_ENCRYPTION: + hasContentEncryption = true; + break; default: // pass } @@ -256,17 +288,25 @@ public final class WebmExtractor implements Extractor { case ID_CUES: buildCues(); return false; - case ID_VIDEO: - buildVideoFormat(); + case ID_CONTENT_ENCODING: + if (!hasContentEncryption) { + // We found a ContentEncoding other than Encryption. + throw new ParserException("Found an unsupported ContentEncoding"); + } + if (encryptionKeyId == null) { + throw new ParserException("Encrypted Track found but ContentEncKeyID was not found"); + } + // Widevine. + psshInfo.put(new UUID(0xEDEF8BA979D64ACEL, 0xA3C827DCD51D21EDL), encryptionKeyId); return true; case ID_AUDIO: - seenAudioTrack = true; + isAudioTrack = true; return true; case ID_TRACK_ENTRY: - if (seenAudioTrack) { - // Audio format has to be built here since codec private may not be available at the end - // of ID_AUDIO. + if (isAudioTrack) { buildAudioFormat(); + } else { + buildVideoFormat(); } return true; default: @@ -306,6 +346,37 @@ public final class WebmExtractor implements Extractor { case ID_CHANNELS: channelCount = (int) value; break; + case ID_CONTENT_ENCODING_ORDER: + // This extractor only supports one ContentEncoding element and hence the order has to be 0. + if (value != 0) { + throw new ParserException("ContentEncodingOrder " + value + " not supported"); + } + break; + case ID_CONTENT_ENCODING_SCOPE: + // This extractor only supports the scope of all frames (since that's the only scope used + // for Encryption). + if (value != 1) { + throw new ParserException("ContentEncodingScope " + value + " not supported"); + } + break; + case ID_CONTENT_ENCODING_TYPE: + // This extractor only supports Encrypted ContentEncodingType. + if (value != 1) { + throw new ParserException("ContentEncodingType " + value + " not supported"); + } + break; + case ID_CONTENT_ENCRYPTION_ALGORITHM: + // Only the value 5 (AES) is allowed according to the WebM specification. + if (value != 5) { + throw new ParserException("ContentEncAlgo " + value + " not supported"); + } + break; + case ID_CONTENT_ENCRYPTION_AES_SETTINGS_CIPHER_MODE: + // Only the value 1 is allowed according to the WebM specification. + if (value != 1) { + throw new ParserException("AESSettingsCipherMode " + value + " not supported"); + } + break; case ID_CUE_TIME: cueTimesUs.add(scaleTimecodeToUs(value)); break; @@ -397,22 +468,48 @@ public final class WebmExtractor implements Extractor { } boolean invisible = (simpleBlockTimecodeAndFlags[2] & 0x08) == 0x08; int lacing = (simpleBlockTimecodeAndFlags[2] & 0x06) >> 1; + if (lacing != LACING_NONE) { + throw new ParserException("Lacing mode " + lacing + " not supported"); + } + long elementEndOffsetBytes = elementOffsetBytes + headerSizeBytes + contentsSizeBytes; + simpleBlockTimecodeUs = clusterTimecodeUs + timecodeUs; + sampleHolder.flags = keyframe ? C.SAMPLE_FLAG_SYNC : 0; + sampleHolder.decodeOnly = invisible; + sampleHolder.timeUs = clusterTimecodeUs + timecodeUs; + sampleHolder.size = (int) (elementEndOffsetBytes - reader.getBytesRead()); - // Validate lacing and set info into sample holder. - switch (lacing) { - case LACING_NONE: - long elementEndOffsetBytes = elementOffsetBytes + headerSizeBytes + contentsSizeBytes; - simpleBlockTimecodeUs = clusterTimecodeUs + timecodeUs; - sampleHolder.flags = keyframe ? C.SAMPLE_FLAG_SYNC : 0; - sampleHolder.decodeOnly = invisible; - sampleHolder.timeUs = clusterTimecodeUs + timecodeUs; - sampleHolder.size = (int) (elementEndOffsetBytes - reader.getBytesRead()); - break; - case LACING_EBML: - case LACING_FIXED: - case LACING_XIPH: - default: - throw new ParserException("Lacing mode " + lacing + " not supported"); + if (hasContentEncryption) { + byte[] signalByte = new byte[1]; + reader.readBytes(inputStream, signalByte, 1); + sampleHolder.size -= 1; + // First bit of the signalByte (extension bit) must be 0. + if ((signalByte[0] & 0x80) != 0) { + throw new ParserException("Extension bit is set in signal byte"); + } + boolean isEncrypted = (signalByte[0] & 0x01) == 0x01; + byte[] iv = null; + if (isEncrypted) { + iv = sampleHolder.cryptoInfo.iv; + if (iv == null || iv.length != BLOCK_COUNTER_SIZE) { + iv = new byte[BLOCK_COUNTER_SIZE]; + } + reader.readBytes(inputStream, iv, 8); // The container has only 8 bytes of IV. + sampleHolder.size -= 8; + sampleHolder.flags |= MediaExtractor.SAMPLE_FLAG_ENCRYPTED; + } + int[] numBytesOfClearData = sampleHolder.cryptoInfo.numBytesOfClearData; + if (numBytesOfClearData == null || numBytesOfClearData.length != 1) { + numBytesOfClearData = new int[1]; + } + numBytesOfClearData[0] = isEncrypted ? 0 : sampleHolder.size; + int[] numBytesOfEncryptedData = sampleHolder.cryptoInfo.numBytesOfEncryptedData; + if (numBytesOfEncryptedData == null || numBytesOfEncryptedData.length != 1) { + numBytesOfEncryptedData = new int[1]; + } + numBytesOfEncryptedData[0] = isEncrypted ? sampleHolder.size : 0; + sampleHolder.cryptoInfo.set( + 1, numBytesOfClearData, numBytesOfEncryptedData, encryptionKeyId, iv, + isEncrypted ? MediaCodec.CRYPTO_MODE_AES_CTR : MediaCodec.CRYPTO_MODE_UNENCRYPTED); } if (sampleHolder.data == null || sampleHolder.data.capacity() < sampleHolder.size) { @@ -432,6 +529,10 @@ public final class WebmExtractor implements Extractor { codecPrivate = new byte[contentsSizeBytes]; reader.readBytes(inputStream, codecPrivate, contentsSizeBytes); break; + case ID_CONTENT_ENCRYPTION_KEY_ID: + encryptionKeyId = new byte[contentsSizeBytes]; + reader.readBytes(inputStream, encryptionKeyId, contentsSizeBytes); + break; default: // pass } diff --git a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java index 757db52ae2..d96151695f 100644 --- a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java +++ b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java @@ -24,11 +24,15 @@ import com.google.android.exoplayer.upstream.ByteArrayNonBlockingInputStream; import com.google.android.exoplayer.upstream.NonBlockingInputStream; import com.google.android.exoplayer.util.MimeTypes; +import android.media.MediaCodec; +import android.media.MediaExtractor; import android.test.InstrumentationTestCase; import java.io.IOException; import java.nio.ByteBuffer; import java.util.Arrays; +import java.util.Map; +import java.util.UUID; public class WebmExtractorTest extends InstrumentationTestCase { @@ -50,6 +54,12 @@ public class WebmExtractorTest extends InstrumentationTestCase { private static final String TEST_VORBIS_CODEC_PRIVATE = "webm/vorbis_codec_private"; private static final int TEST_VORBIS_INFO_SIZE = 30; private static final int TEST_VORBIS_BOOKS_SIZE = 4140; + private static final byte[] TEST_ENCRYPTION_KEY_ID = { 0x00, 0x01, 0x02, 0x03 }; + private static final UUID WIDEVINE_UUID = new UUID(0xEDEF8BA979D64ACEL, 0xA3C827DCD51D21EDL); + // First 8 bytes of IV come from the container, last 8 bytes are always initialized to 0. + private static final byte[] TEST_INITIALIZATION_VECTOR = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; private static final int ID_VP9 = 0; private static final int ID_OPUS = 1; @@ -71,7 +81,7 @@ public class WebmExtractorTest extends InstrumentationTestCase { public void testPrepare() throws ParserException { NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( - createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9)); + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9, null)); assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); assertFormat(); assertIndex(new IndexPoint(0, 0, TEST_DURATION_US)); @@ -79,7 +89,7 @@ public class WebmExtractorTest extends InstrumentationTestCase { public void testPrepareOpus() throws ParserException { NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( - createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_OPUS)); + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_OPUS, null)); assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); assertAudioFormat(ID_OPUS); assertIndex(new IndexPoint(0, 0, TEST_DURATION_US)); @@ -87,15 +97,28 @@ public class WebmExtractorTest extends InstrumentationTestCase { public void testPrepareVorbis() throws ParserException { NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( - createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VORBIS)); + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VORBIS, null)); assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); assertAudioFormat(ID_VORBIS); assertIndex(new IndexPoint(0, 0, TEST_DURATION_US)); } + public void testPrepareContentEncodingEncryption() throws ParserException { + ContentEncodingSettings settings = new ContentEncodingSettings(0, 1, 1, 5, 1); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9, settings)); + assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); + assertFormat(); + assertIndex(new IndexPoint(0, 0, TEST_DURATION_US)); + Map psshInfo = extractor.getPsshInfo(); + assertNotNull(psshInfo); + assertTrue(psshInfo.containsKey(WIDEVINE_UUID)); + android.test.MoreAsserts.assertEquals(TEST_ENCRYPTION_KEY_ID, psshInfo.get(WIDEVINE_UUID)); + } + public void testPrepareThreeCuePoints() throws ParserException { NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( - createInitializationSegment(3, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9)); + createInitializationSegment(3, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9, null)); assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); assertFormat(); assertIndex( @@ -106,7 +129,7 @@ public class WebmExtractorTest extends InstrumentationTestCase { public void testPrepareCustomTimecodeScale() throws ParserException { NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( - createInitializationSegment(3, 0, true, 1000, ID_VP9)); + createInitializationSegment(3, 0, true, 1000, ID_VP9, null)); assertEquals(EXPECTED_INIT_RESULT, extractor.read(testInputStream, sampleHolder)); assertFormat(); assertIndex( @@ -117,7 +140,7 @@ public class WebmExtractorTest extends InstrumentationTestCase { public void testPrepareNoCuePoints() { NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( - createInitializationSegment(0, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9)); + createInitializationSegment(0, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9, null)); try { extractor.read(testInputStream, sampleHolder); fail(); @@ -128,7 +151,7 @@ public class WebmExtractorTest extends InstrumentationTestCase { public void testPrepareInvalidDocType() { NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( - createInitializationSegment(1, 0, false, DEFAULT_TIMECODE_SCALE, ID_VP9)); + createInitializationSegment(1, 0, false, DEFAULT_TIMECODE_SCALE, ID_VP9, null)); try { extractor.read(testInputStream, sampleHolder); fail(); @@ -137,68 +160,158 @@ public class WebmExtractorTest extends InstrumentationTestCase { } } + public void testPrepareInvalidContentEncodingOrder() { + ContentEncodingSettings settings = new ContentEncodingSettings(1, 1, 1, 5, 1); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9, settings)); + try { + extractor.read(testInputStream, sampleHolder); + fail(); + } catch (ParserException exception) { + assertEquals("ContentEncodingOrder 1 not supported", exception.getMessage()); + } + } + + public void testPrepareInvalidContentEncodingScope() { + ContentEncodingSettings settings = new ContentEncodingSettings(0, 0, 1, 5, 1); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9, settings)); + try { + extractor.read(testInputStream, sampleHolder); + fail(); + } catch (ParserException exception) { + assertEquals("ContentEncodingScope 0 not supported", exception.getMessage()); + } + } + + public void testPrepareInvalidContentEncodingType() { + ContentEncodingSettings settings = new ContentEncodingSettings(0, 1, 0, 5, 1); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9, settings)); + try { + extractor.read(testInputStream, sampleHolder); + fail(); + } catch (ParserException exception) { + assertEquals("ContentEncodingType 0 not supported", exception.getMessage()); + } + } + + public void testPrepareInvalidContentEncAlgo() { + ContentEncodingSettings settings = new ContentEncodingSettings(0, 1, 1, 4, 1); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9, settings)); + try { + extractor.read(testInputStream, sampleHolder); + fail(); + } catch (ParserException exception) { + assertEquals("ContentEncAlgo 4 not supported", exception.getMessage()); + } + } + + public void testPrepareInvalidAESSettingsCipherMode() { + ContentEncodingSettings settings = new ContentEncodingSettings(0, 1, 1, 5, 0); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream( + createInitializationSegment(1, 0, true, DEFAULT_TIMECODE_SCALE, ID_VP9, settings)); + try { + extractor.read(testInputStream, sampleHolder); + fail(); + } catch (ParserException exception) { + assertEquals("AESSettingsCipherMode 0 not supported", exception.getMessage()); + } + } + public void testReadSampleKeyframe() throws ParserException { - MediaSegment mediaSegment = createMediaSegment(100, 0, 0, true, false, true); + MediaSegment mediaSegment = createMediaSegment(100, 0, 0, true, false, true, false, false); byte[] testInputData = joinByteArrays( createInitializationSegment( - 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_VP9), + 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_VP9, null), mediaSegment.clusterBytes); NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); assertEquals(EXPECTED_INIT_AND_SAMPLE_RESULT, extractor.read(testInputStream, sampleHolder)); assertFormat(); - assertSample(mediaSegment, 0, true, false); + assertSample(mediaSegment, 0, true, false, false); assertEquals(WebmExtractor.RESULT_END_OF_STREAM, extractor.read(testInputStream, sampleHolder)); } public void testReadBlock() throws ParserException { - MediaSegment mediaSegment = createMediaSegment(100, 0, 0, true, false, false); + MediaSegment mediaSegment = createMediaSegment(100, 0, 0, true, false, false, false, false); byte[] testInputData = joinByteArrays( createInitializationSegment( - 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_OPUS), + 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_OPUS, null), mediaSegment.clusterBytes); NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); assertEquals(EXPECTED_INIT_AND_SAMPLE_RESULT, extractor.read(testInputStream, sampleHolder)); assertAudioFormat(ID_OPUS); - assertSample(mediaSegment, 0, true, false); + assertSample(mediaSegment, 0, true, false, false); assertEquals(WebmExtractor.RESULT_END_OF_STREAM, extractor.read(testInputStream, sampleHolder)); } - public void testReadSampleInvisible() throws ParserException { - MediaSegment mediaSegment = createMediaSegment(100, 12, 13, false, true, true); + public void testReadEncryptedFrame() throws ParserException { + MediaSegment mediaSegment = createMediaSegment(100, 0, 0, true, false, true, true, true); + ContentEncodingSettings settings = new ContentEncodingSettings(0, 1, 1, 5, 1); byte[] testInputData = joinByteArrays( createInitializationSegment( - 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_VP9), + 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_VP9, settings), mediaSegment.clusterBytes); NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); assertEquals(EXPECTED_INIT_AND_SAMPLE_RESULT, extractor.read(testInputStream, sampleHolder)); assertFormat(); - assertSample(mediaSegment, 25000, false, true); + assertSample(mediaSegment, 0, true, false, true); + assertEquals(WebmExtractor.RESULT_END_OF_STREAM, extractor.read(testInputStream, sampleHolder)); + } + + public void testReadEncryptedFrameWithInvalidSignalByte() { + MediaSegment mediaSegment = createMediaSegment(100, 0, 0, true, false, true, true, false); + ContentEncodingSettings settings = new ContentEncodingSettings(0, 1, 1, 5, 1); + byte[] testInputData = joinByteArrays( + createInitializationSegment( + 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_VP9, settings), + mediaSegment.clusterBytes); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); + try { + extractor.read(testInputStream, sampleHolder); + fail(); + } catch (ParserException exception) { + assertEquals("Extension bit is set in signal byte", exception.getMessage()); + } + } + + public void testReadSampleInvisible() throws ParserException { + MediaSegment mediaSegment = createMediaSegment(100, 12, 13, false, true, true, false, false); + byte[] testInputData = joinByteArrays( + createInitializationSegment( + 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_VP9, null), + mediaSegment.clusterBytes); + NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); + assertEquals(EXPECTED_INIT_AND_SAMPLE_RESULT, extractor.read(testInputStream, sampleHolder)); + assertFormat(); + assertSample(mediaSegment, 25000, false, true, false); assertEquals(WebmExtractor.RESULT_END_OF_STREAM, extractor.read(testInputStream, sampleHolder)); } public void testReadSampleCustomTimescale() throws ParserException { - MediaSegment mediaSegment = createMediaSegment(100, 12, 13, false, false, true); + MediaSegment mediaSegment = createMediaSegment(100, 12, 13, false, false, true, false, false); byte[] testInputData = joinByteArrays( createInitializationSegment( - 1, mediaSegment.clusterBytes.length, true, 1000, ID_VP9), + 1, mediaSegment.clusterBytes.length, true, 1000, ID_VP9, null), mediaSegment.clusterBytes); NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); assertEquals(EXPECTED_INIT_AND_SAMPLE_RESULT, extractor.read(testInputStream, sampleHolder)); assertFormat(); - assertSample(mediaSegment, 25, false, false); + assertSample(mediaSegment, 25, false, false, false); assertEquals(WebmExtractor.RESULT_END_OF_STREAM, extractor.read(testInputStream, sampleHolder)); } public void testReadSampleNegativeSimpleBlockTimecode() throws ParserException { - MediaSegment mediaSegment = createMediaSegment(100, 13, -12, true, true, true); + MediaSegment mediaSegment = createMediaSegment(100, 13, -12, true, true, true, false, false); byte[] testInputData = joinByteArrays( createInitializationSegment( - 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_VP9), + 1, mediaSegment.clusterBytes.length, true, DEFAULT_TIMECODE_SCALE, ID_VP9, null), mediaSegment.clusterBytes); NonBlockingInputStream testInputStream = new ByteArrayNonBlockingInputStream(testInputData); assertEquals(EXPECTED_INIT_AND_SAMPLE_RESULT, extractor.read(testInputStream, sampleHolder)); assertFormat(); - assertSample(mediaSegment, 1000, true, true); + assertSample(mediaSegment, 1000, true, true, false); assertEquals(WebmExtractor.RESULT_END_OF_STREAM, extractor.read(testInputStream, sampleHolder)); } @@ -241,23 +354,33 @@ public class WebmExtractorTest extends InstrumentationTestCase { } private void assertSample( - MediaSegment mediaSegment, int timeUs, boolean keyframe, boolean invisible) { + MediaSegment mediaSegment, int timeUs, boolean keyframe, boolean invisible, + boolean encrypted) { assertTrue(Arrays.equals( mediaSegment.videoBytes, Arrays.copyOf(sampleHolder.data.array(), sampleHolder.size))); assertEquals(timeUs, sampleHolder.timeUs); assertEquals(keyframe, (sampleHolder.flags & C.SAMPLE_FLAG_SYNC) != 0); assertEquals(invisible, sampleHolder.decodeOnly); + assertEquals(encrypted, (sampleHolder.flags & MediaExtractor.SAMPLE_FLAG_ENCRYPTED) != 0); + if (encrypted) { + android.test.MoreAsserts.assertEquals(TEST_INITIALIZATION_VECTOR, sampleHolder.cryptoInfo.iv); + assertEquals(MediaCodec.CRYPTO_MODE_AES_CTR, sampleHolder.cryptoInfo.mode); + assertEquals(1, sampleHolder.cryptoInfo.numSubSamples); + assertEquals(100, sampleHolder.cryptoInfo.numBytesOfEncryptedData[0]); + assertEquals(0, sampleHolder.cryptoInfo.numBytesOfClearData[0]); + } } private byte[] createInitializationSegment( int cuePoints, int mediaSegmentSize, boolean docTypeIsWebm, int timecodeScale, - int codecId) { + int codecId, ContentEncodingSettings contentEncodingSettings) { int initalizationSegmentSize = INFO_ELEMENT_BYTE_SIZE + TRACKS_ELEMENT_BYTE_SIZE + CUES_ELEMENT_BYTE_SIZE + CUE_POINT_ELEMENT_BYTE_SIZE * cuePoints; byte[] tracksElement = null; switch (codecId) { case ID_VP9: - tracksElement = createTracksElementWithVideo(true, TEST_WIDTH, TEST_HEIGHT); + tracksElement = createTracksElementWithVideo( + true, TEST_WIDTH, TEST_HEIGHT, contentEncodingSettings); break; case ID_OPUS: tracksElement = createTracksElementWithOpusAudio(TEST_CHANNEL_COUNT); @@ -278,12 +401,13 @@ public class WebmExtractorTest extends InstrumentationTestCase { } private static MediaSegment createMediaSegment(int videoBytesLength, int clusterTimecode, - int blockTimecode, boolean keyframe, boolean invisible, boolean isSimple) { + int blockTimecode, boolean keyframe, boolean invisible, boolean simple, + boolean encrypted, boolean validSignalByte) { byte[] videoBytes = createVideoBytes(videoBytesLength); byte[] blockBytes; - if (isSimple) { + if (simple) { blockBytes = createSimpleBlockElement(videoBytes.length, blockTimecode, - keyframe, invisible, true); + keyframe, invisible, true, encrypted, validSignalByte); } else { blockBytes = createBlockElement(videoBytes.length, blockTimecode, invisible, true); } @@ -338,22 +462,66 @@ public class WebmExtractorTest extends InstrumentationTestCase { } private static byte[] createTracksElementWithVideo( - boolean codecIsVp9, int pixelWidth, int pixelHeight) { + boolean codecIsVp9, int pixelWidth, int pixelHeight, + ContentEncodingSettings contentEncodingSettings) { byte[] widthBytes = getIntegerBytes(pixelWidth); byte[] heightBytes = getIntegerBytes(pixelHeight); - return createByteArray( - 0x16, 0x54, 0xAE, 0x6B, // Tracks - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, // size=36 - 0xAE, // TrackEntry - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, // size=27 - 0x86, // CodecID - 0x85, 0x56, 0x5F, 0x56, 0x50, codecIsVp9 ? 0x39 : 0x30, // size=5 value=V_VP9/0 - 0xE0, // Video - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // size=8 - 0xB0, // PixelWidth - 0x82, widthBytes[2], widthBytes[3], // size=2 - 0xBA, // PixelHeight - 0x82, heightBytes[2], heightBytes[3]); // size=2 + if (contentEncodingSettings != null) { + byte[] orderBytes = getIntegerBytes(contentEncodingSettings.order); + byte[] scopeBytes = getIntegerBytes(contentEncodingSettings.scope); + byte[] typeBytes = getIntegerBytes(contentEncodingSettings.type); + byte[] algorithmBytes = getIntegerBytes(contentEncodingSettings.algorithm); + byte[] cipherModeBytes = getIntegerBytes(contentEncodingSettings.aesCipherMode); + return createByteArray( + 0x16, 0x54, 0xAE, 0x6B, // Tracks + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, // size=72 + 0xAE, // TrackEntry + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, // size=63 + 0x86, // CodecID + 0x85, 0x56, 0x5F, 0x56, 0x50, codecIsVp9 ? 0x39 : 0x30, // size=5 value=V_VP9/0 + 0x6D, 0x80, // ContentEncodings + 0xA4, // size=36 + 0x62, 0x40, // ContentEncoding + 0xA1, // size=33 + 0x50, 0x31, // ContentEncodingOrder + 0x81, orderBytes[3], + 0x50, 0x32, // ContentEncodingScope + 0x81, scopeBytes[3], + 0x50, 0x33, // ContentEncodingType + 0x81, typeBytes[3], + 0x50, 0x35, // ContentEncryption + 0x92, // size=18 + 0x47, 0xE1, // ContentEncAlgo + 0x81, algorithmBytes[3], + 0x47, 0xE2, // ContentEncKeyID + 0x84, // size=4 + TEST_ENCRYPTION_KEY_ID[0], TEST_ENCRYPTION_KEY_ID[1], + TEST_ENCRYPTION_KEY_ID[2], TEST_ENCRYPTION_KEY_ID[3], // value=binary + 0x47, 0xE7, // ContentEncAESSettings + 0x84, // size=4 + 0x47, 0xE8, // AESSettingsCipherMode + 0x81, cipherModeBytes[3], + 0xE0, // Video + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // size=8 + 0xB0, // PixelWidth + 0x82, widthBytes[2], widthBytes[3], // size=2 + 0xBA, // PixelHeight + 0x82, heightBytes[2], heightBytes[3]); // size=2 + } else { + return createByteArray( + 0x16, 0x54, 0xAE, 0x6B, // Tracks + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, // size=36 + 0xAE, // TrackEntry + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, // size=27 + 0x86, // CodecID + 0x85, 0x56, 0x5F, 0x56, 0x50, codecIsVp9 ? 0x39 : 0x30, // size=5 value=V_VP9/0 + 0xE0, // Video + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // size=8 + 0xB0, // PixelWidth + 0x82, widthBytes[2], widthBytes[3], // size=2 + 0xBA, // PixelHeight + 0x82, heightBytes[2], heightBytes[3]); // size=2 + } } private static byte[] createTracksElementWithOpusAudio(int channelCount) { @@ -438,16 +606,23 @@ public class WebmExtractorTest extends InstrumentationTestCase { } private static byte[] createSimpleBlockElement( - int size, int timecode, boolean keyframe, boolean invisible, boolean noLacing) { - byte[] sizeBytes = getIntegerBytes(size + 4); + int size, int timecode, boolean keyframe, boolean invisible, boolean noLacing, + boolean encrypted, boolean validSignalByte) { + byte[] sizeBytes = getIntegerBytes(size + 4 + (encrypted ? 9 : 0)); byte[] timeBytes = getIntegerBytes(timecode); byte flags = (byte) ((keyframe ? 0x80 : 0x00) | (invisible ? 0x08 : 0x00) | (noLacing ? 0x00 : 0x06)); - return createByteArray( + byte[] simpleBlock = createByteArray( 0xA3, // SimpleBlock 0x01, 0x00, 0x00, 0x00, sizeBytes[0], sizeBytes[1], sizeBytes[2], sizeBytes[3], 0x81, // Track number value=1 timeBytes[2], timeBytes[3], flags); // Timecode and flags + if (encrypted) { + simpleBlock = joinByteArrays( + simpleBlock, createByteArray(validSignalByte ? 0x01 : 0x80), + Arrays.copyOfRange(TEST_INITIALIZATION_VECTOR, 0, 8)); + } + return simpleBlock; } private static byte[] createBlockElement( @@ -520,4 +695,24 @@ public class WebmExtractorTest extends InstrumentationTestCase { } + /** Used by {@link createTracksElementWithVideo} to create a Track header with Encryption. */ + private static final class ContentEncodingSettings { + + private final int order; + private final int scope; + private final int type; + private final int algorithm; + private final int aesCipherMode; + + private ContentEncodingSettings(int order, int scope, int type, int algorithm, + int aesCipherMode) { + this.order = order; + this.scope = scope; + this.type = type; + this.algorithm = algorithm; + this.aesCipherMode = aesCipherMode; + } + + } + } From eec6458b435027da1609da4d9468edfeb691e22f Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Tue, 10 Mar 2015 19:37:47 +0000 Subject: [PATCH 26/69] Add handling of Extended Western European character set for CEA-608. --- .../text/eia608/ClosedCaptionCtrl.java | 2 + .../exoplayer/text/eia608/Eia608Parser.java | 80 ++++++++++++++++--- .../text/eia608/Eia608TrackRenderer.java | 5 ++ 3 files changed, 77 insertions(+), 10 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/text/eia608/ClosedCaptionCtrl.java b/library/src/main/java/com/google/android/exoplayer/text/eia608/ClosedCaptionCtrl.java index c784f50cd9..0fd1b1fcb6 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/eia608/ClosedCaptionCtrl.java +++ b/library/src/main/java/com/google/android/exoplayer/text/eia608/ClosedCaptionCtrl.java @@ -57,6 +57,8 @@ package com.google.android.exoplayer.text.eia608; public static final byte CARRIAGE_RETURN = 0x2D; public static final byte ERASE_NON_DISPLAYED_MEMORY = 0x2E; + public static final byte BACKSPACE = 0x21; + public static final byte MID_ROW_CHAN_1 = 0x11; public static final byte MID_ROW_CHAN_2 = 0x19; diff --git a/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java b/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java index b5b8c39eff..ddc29dbd59 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java +++ b/library/src/main/java/com/google/android/exoplayer/text/eia608/Eia608Parser.java @@ -82,6 +82,26 @@ public class Eia608Parser { 0xFB // 3F: 251 'û' "Latin small letter U with circumflex" }; + // Extended Spanish/Miscellaneous and French char set. + private static final int[] SPECIAL_ES_FR_CHARACTER_SET = new int[] { + // Spanish and misc. + 0xC1, 0xC9, 0xD3, 0xDA, 0xDC, 0xFC, 0x2018, 0xA1, + 0x2A, 0x27, 0x2014, 0xA9, 0x2120, 0x2022, 0x201C, 0x201D, + // French. + 0xC0, 0xC2, 0xC7, 0xC8, 0xCA, 0xCB, 0xEB, 0xCE, + 0xCF, 0xEF, 0xD4, 0xD9, 0xF9, 0xDB, 0xAB, 0xBB + }; + + //Extended Portuguese and German/Danish char set. + private static final int[] SPECIAL_PT_DE_CHARACTER_SET = new int[] { + // Portuguese. + 0xC3, 0xE3, 0xCD, 0xCC, 0xEC, 0xD2, 0xF2, 0xD5, + 0xF5, 0x7B, 0x7D, 0x5C, 0x5E, 0x5F, 0x7C, 0x7E, + // German/Danish. + 0xC4, 0xE4, 0xD6, 0xF6, 0xDF, 0xA5, 0xA4, 0x2502, + 0xC5, 0xE5, 0xD8, 0xF8, 0x250C, 0x2510, 0x2514, 0x2518 + }; + private final ParsableBitArray seiBuffer; private final StringBuilder stringBuilder; private final ArrayList captions; @@ -134,31 +154,45 @@ public class Eia608Parser { } // Special North American character set. - if ((ccData1 == 0x11) && ((ccData2 & 0x70) == 0x30)) { + // ccData2 - P|0|1|1|X|X|X|X + if ((ccData1 == 0x11 || ccData1 == 0x19) + && ((ccData2 & 0x70) == 0x30)) { stringBuilder.append(getSpecialChar(ccData2)); continue; } + // Extended Spanish/Miscellaneous and French character set. + // ccData2 - P|0|1|X|X|X|X|X + if ((ccData1 == 0x12 || ccData1 == 0x1A) + && ((ccData2 & 0x60) == 0x20)) { + backspace(); // Remove standard equivalent of the special extended char. + stringBuilder.append(getExtendedEsFrChar(ccData2)); + continue; + } + + // Extended Portuguese and German/Danish character set. + // ccData2 - P|0|1|X|X|X|X|X + if ((ccData1 == 0x13 || ccData1 == 0x1B) + && ((ccData2 & 0x60) == 0x20)) { + backspace(); // Remove standard equivalent of the special extended char. + stringBuilder.append(getExtendedPtDeChar(ccData2)); + continue; + } + // Control character. if (ccData1 < 0x20) { - if (stringBuilder.length() > 0) { - captions.add(new ClosedCaptionText(stringBuilder.toString())); - stringBuilder.setLength(0); - } - captions.add(new ClosedCaptionCtrl(ccData1, ccData2)); + addCtrl(ccData1, ccData2); continue; } // Basic North American character set. stringBuilder.append(getChar(ccData1)); - if (ccData2 != 0) { + if (ccData2 >= 0x20) { stringBuilder.append(getChar(ccData2)); } } - if (stringBuilder.length() > 0) { - captions.add(new ClosedCaptionText(stringBuilder.toString())); - } + addBufferedText(); if (captions.isEmpty()) { return null; @@ -179,6 +213,32 @@ public class Eia608Parser { return (char) SPECIAL_CHARACTER_SET[index]; } + private static char getExtendedEsFrChar(byte ccData) { + int index = ccData & 0x1F; + return (char) SPECIAL_ES_FR_CHARACTER_SET[index]; + } + + private static char getExtendedPtDeChar(byte ccData) { + int index = ccData & 0x1F; + return (char) SPECIAL_PT_DE_CHARACTER_SET[index]; + } + + private void addBufferedText() { + if (stringBuilder.length() > 0) { + captions.add(new ClosedCaptionText(stringBuilder.toString())); + stringBuilder.setLength(0); + } + } + + private void addCtrl(byte ccData1, byte ccData2) { + addBufferedText(); + captions.add(new ClosedCaptionCtrl(ccData1, ccData2)); + } + + private void backspace() { + addCtrl((byte) 0x14, ClosedCaptionCtrl.BACKSPACE); + } + /** * Inspects an sei message to determine whether it contains EIA-608. *